在 Grails 中实现领域模型等价的最佳实践是什么?
我们是包含 id 字段还是仅包含业务规则相关字段?
最佳答案
Hibernate 建议您在 equals 实现中仅包含业务键/候选键。如果您生成了 id 字段,则在 equals 实现中包含 id 字段可能会产生负面影响。 Hibernate 仅在保存对象时分配 id(如果您使用生成的 id)。现在例如,如果您的新未保存域对象在 HashSet 中并且您保存了域,它将生成并将 id 分配给域,如果您的 equals/hashcode 基于 id 字段,则域的哈希码将发生变化,并且您的域将丢失。
建议您使用唯一的不可变字段来实现 equals。
查看引用资料
关于grails - 关于在 equals 实现中包含域模型 id 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29207268/