[英]Spring JPA @IdClass for CompositeKey minimum requirements
嗨,我想对 compositeKey 使用 @IdClass 注释,但我有点困惑
对于 CompositeKey class,有些文章说你必须覆盖 equals 和 hash 方法是否必须? 我的第二个问题是我应该将 getter 和 setter 放入 compositekey class 中的 myfields 中,还是我已经将 getter 和 setter 放入我的主要实体中,该实体将 MyCompositeKey 用作 @IdClass。 有人可以分享@IdClass 最低要求的例子吗
public class MyCompositeKey implements Serializable {
public MyCompositeKey (){}
private String Name; //Is it necessary to add getter setter to fields
private String UserName; //Is it necessary to add getter setter to fields
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
....
}
@Override
public int hashCode()
return Objects.hash(******);
}
通常 Hibernate 需要为主键实现hashCode()
和equals()
。 (我不知道其他 JPA 实现)。
文档 [1] 声称
你必须覆盖
equals()
和hashCode()
方法,如果你
- 打算将持久类的实例放在一个集合中(推荐的表示多值关联的方法)和
- 打算使用分离实例的重新连接
因此,恕我直言,实施它们始终是一个好主意,因为您不知道将来将如何使用您的实体。
对于第二个问题,根据 [2] 你必须实现 getter 而不是 setter。 但是,恕我直言,为什么不呢? 如果您使用 IDE,例如 Eclipse,则很容易同时创建它们。
[2] http://www.thejavageek.com/2014/05/01/jpa-idclass-example/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.