【发布时间】:2017-05-02 09:05:23
【问题描述】:
stackoverflow 上有很多关于在 Hibernate 实体中使用 List 与 Set 的问题。我的问题略有不同(或者可能相同,但我还无法理解)。
如果我阅读了 Hibernate 文档,他们建议在这里使用 Set 进行多值关联 http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#persistent-classes-equalshashcode。
Quoting from above documentation link:
You have to override the equals() and hashCode() methods if you:
- intend to put instances of persistent classes in a Set (the recommended way to represent many-valued associations);
- and intend to use reattachment of detached instances
直到 Hibernate 4.3。但是在以后的版本中,我不再看到那个声明了(http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#mapping-model-pojo-equalshashcode)
所以我的问题是
- 为什么 Hibernate 建议在 Hibernate 4 之前使用
Set而不是List? - 由于我在 Hibernate 5 中没有看到该建议,是否意味着它不再有效?
谢谢!!
【问题讨论】:
-
我不认为你应该做的只有一个规则,但用法取决于你的需要。我建议阅读此内容,但您可能已经阅读过 - stackoverflow.com/questions/6562673/…
-
感谢您的评论。我读了那个问题,还有其他一些问题。我也同意不只是一个单一的规则。我试图理解为什么 Hibernate 推荐使用 Sets。我认为这样的建议背后应该有一些原因。
标签: java list hibernate set hibernate-mapping