私は他の抽象クラスを継承するJPAエンティティを持っています。私はsetterとgetterを書くのを避けるために@Dataを使いたいが、私のequalsメソッドとhashcodeメソッドは存在する。ロンボク - イコールとハッシュコードが実装されている場合の@Dataによる警告
私は警告しますが、私はいけないと思う:
@Data
@Entity
public class User extends AbstractAuditingEntity implements Serializable {
....
@Override
public boolean equals(Object o) {
...
}
@Override
public int hashCode() {
...
}
}
私は@Dataに@EqualsAndHashCode(callSuper = false)をさらに追加し
は、私が手に:私のUserクラスで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
^
:
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)
(これはあなたの例外または警告メッセージを回避します)。あなたは何を理解していますか? –
@RCメッセージは、 "スーパークラスへの呼び出しなしでequals/hashCodeの実装を生成する"です。私の理解は、メソッドが実装されているときに生成されないので、これが私を混乱させるということです。 –
@RC。彼らは明白ですが、その行動は間違っているようです。 'equals'と' hashCode'が手動で定義されているとき、 '@Data'は警告なしでそれらをスキップするだけです。 – maaartinus