Lombok内部对象字段的EqualsAndHashCode

5

我需要通过内部对象字段创建@EqualsAndHashCode。我有两个实体WorkPlace和Account。

简码:

***WorkPlace.java***
public class WorkPlace {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne(optional = false)
    @NotNull
    private Account account;
    .......................
}
***Account.java***
public class Account {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    ...............
}

我想使用 Lombok 在 WorkPlace.class 中创建 EqualsAndHashCode,类似于以下代码:

@EqualsAndHashCode(of = {"id", "account.id"})

在构建项目时,"account.id"被忽略,并通过id字段创建EqualsAndHashCode。

使用lombok是否可以做到这样的操作?

1个回答

4
您可以在Workplace.java中添加以下方法和注释以获得所需的结果:
@EqualsAndHashcode.Include
public Long getAccountId() {
  return account.getId();
}

谢谢,但我有问题。我该如何使用EqualsAndHashcode.Include和EqualsAndHashcode(of = {字段名称})?我遇到了一个错误:旧样式的“exclude/of”参数不能与新样式的Include/Exclude注释一起使用。 - Volodymyr Zavada
摆脱of = {field_name},并使用Include注释来获取您需要的所有字段。 - Filippo De Angelis
1
...并且还要添加onlyExplicitlyIncluded=true。或者,排除您不想要的所有字段。随意降低getAccountId的可见性。 - maaartinus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接