Lombok - 在实现equals和hashcode时使用@Data发出警告

时间:2017-09-17 06:25:19

标签: java jpa lombok

我有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)

1 个答案:

答案 0 :(得分:10)

@Data@ToString@EqualsAndHashCode@Getter@Setter@RequiredArgsConstructor的快捷方式。由于您只想要@Getter@Setter,为什么不直接使用它们(这样可以避免您的异常或警告消息),

@Entity
@Getter
@Setter
public class User extends AbstractAuditingEntity implements Serializable 
    ...

}