如何结合使用@EqualsAndHashCode
和Include
Java版Lombok库。
@EqualsAndHashCode.Include( )
如何使Equals比较班级ID?
示例:
@EqualsAndHashCode.Include( )
@Table(name = "USER")
public class User
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "IDENTITY_USER")
private Long identity;
}
答案 0 :(得分:3)
在Lombok中,只需在必填字段中添加@EqualsAndHashCode.Include
或@EqualsAndHashCode.Exclude
任何类定义都可以使用@EqualsAndHashCode进行注释,以使lombok生成equals(Object other)和hashCode()方法的实现。默认情况下,它将使用所有非静态,非瞬态字段,,但是您可以通过使用@EqualsAndHashCode标记类型成员来修改使用哪些字段(甚至指定要使用各种方法的输出)。 .strong或.EqualsAndHashCode.Exclude。另外,您可以通过使用@ EqualsAndHashCode.Include标记并使用@EqualsAndHashCode(onlyExplicitlyIncluded = true)来精确指定要使用的字段或方法。
@EqualsAndHashCode
@Table(name = "USER")
public class User
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "IDENTITY_USER")
@EqualsAndHashCode.Include
private Long identity;
}
答案 1 :(得分:2)
您应该在字段上使用它,而不是在类本身上使用它。您可以通过检查定义以下目标(字段和方法,而不是类)的注释的定义来进行检查
@Target({ElementType.FIELD, ElementType.METHOD})
这里是使用方法的示例
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Table(name = "USER")
public class User
{
@Id
@EqualsAndHashCode.Include()
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "IDENTITY_USER")
private Long identity;
}
答案 2 :(得分:1)
要在Include
和equals
方法中包括的成员上使用hashCode
批注。如果要确切指定应使用的成员(而不是所有非静态非瞬态成员的默认成员),则可以在onlyExplicitlyIncluded = true
批注中使用@EqualsAndHashCode
选项:
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Table(name = "USER")
public class User
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "IDENTITY_USER")
@EqualsAndHashCode.Include
private Long identity;
}