我有JPA实体扩展其他抽象类。我想使用@Data来避免编写setter和getter,但我的equals和hashcode方法存在。
我收到警告,但我想我不应该:
server\entity\User.java:20: warning: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.
@Data
^
在我的用户类中:
@Data
@Entity
public class User extends AbstractAuditingEntity implements Serializable {
....
@Override
public boolean equals(Object o) {
...
}
@Override
public int hashCode() {
...
}
}
当我另外将@EqualsAndHashCode(callSuper = false)添加到@Data时,我得到:
server\entity\User.java:21: warning: Not generating equals and hashCode: A method with one of those names already exists. (Either both or none of these methods will be generated).
@EqualsAndHashCode(callSuper = false)
答案 0 :(得分:10)
@Data
是@ToString
,@EqualsAndHashCode
,@Getter
,@Setter
和@RequiredArgsConstructor
的快捷方式。由于您只想要@Getter
和@Setter
,为什么不直接使用它们(这样可以避免您的异常或警告消息),
@Entity
@Getter
@Setter
public class User extends AbstractAuditingEntity implements Serializable
...
}