[英]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.