首頁 > Java > java教程 > 如何在不破壞身分的情況下為 JPA 實體實作 hashCode() 和 equals()?

如何在不破壞身分的情況下為 JPA 實體實作 hashCode() 和 equals()?

Susan Sarandon
發布: 2024-11-26 04:05:07
原創
672 人瀏覽過

How to Implement hashCode() and equals() for JPA Entities Without Breaking Identity?

JPA hashCode() / equals() 困境:JPA 中立視角

為JPA 實作hashCode() 和equals() 實體可能會為JPA 實作hashCode() 和equals() 實體可能會帶來一些挑戰,特別是在遵守合約和身分檢測方面。本文從 JPA 實現中立的角度(特別是考慮到 EclipseLink)討論這個問題,探討了可用的選項及其意義。

可能的權衡實作

  1. Object.hashCode() 和Object.equals(): 此預設實作可確保合約一致性,但無法辨識相同的對象,並可能導致分離實體出現問題。
  2. hashCode()/equals() by Primary Key: 遵守hashCode()/equals() 契約,但由於臨時主鍵而破壞了分離實體的身份
  3. hashCode()/equals() by Business-Id:提供正確的身份,但仍可能違反合約並導致外鍵問題。

問題與建議

問題1: 是否有任何選項或權衡被忽略?

答案: 引用的文章「不要讓 Hibernate 竊取您的身分」建議在實例化簡化了物件識別並降低了程式碼複雜性。

問題2:推薦哪個選項?

答案:文中建議的解決方案建議在實例化時分配物件ID,而不是依賴JPA實作。這種方法可確保一致性並簡化身分管理。

以上是如何在不破壞身分的情況下為 JPA 實體實作 hashCode() 和 equals()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板