首页 > 解决方案 > Lombok EqualsAndHashCode 按内部对象字段

问题描述

我需要通过内部对象字段创建@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 做这样的事情?

标签: javalombok

解决方案


您可以在 Workplace.java 中添加以下方法和注释以获得所需的结果:

@EqualsAndHashcode.Include
public Long getAccountId() {
  return account.getId();
}

推荐阅读