我讀Eric Evans的書約DDD和我有以下報價的問題。當你不應該使用這些屬性時,你如何制定equals()
方法?我正在使用JPA,並且我有一個唯一的id屬性,但是隻有在實際持久化後才能設置。所以你會怎麼做?我已經實現了基於屬性的equals方法,我明白你爲什麼不應該這樣做,因爲它在我的項目中失敗了。在實體領域驅動設計
節約實體:
當對象是由它的身份來區分,而不是它的 的屬性,使這種初級其在模型定義。保持類別定義簡單並集中於生命週期連續性和 身份。定義一種區分每個對象的方法,而不管其形式或歷史如何。警惕需要按屬性匹配 對象的需求。定義一個操作,保證 爲每個對象產生一個唯一的結果,可能通過附加一個保證唯一的 符號。的識別這個裝置可以 來自外部,或者它可以是通過 和爲系統創建一個任意的標識符,但它必須對應於身份模型中的 區別。該模型必須定義什麼意思是 同樣的事情。
http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215
可能的複製,見http://stackoverflow.com/questions/5031614/the-jpa-hashcode-equals-dilemma – MRalwasser 2012-02-24 13:27:51
的ID正常工作對我來說:http://stackoverflow.com/questions/7579404/using-auto-generated-id-of-hibenate-entity-object-in-the-the-the-the-the-the-and-hashcode-met – NimChimpsky 2012-02-24 14:54:06