我使用 JPA 2.0 标准和休眠作为持久性提供程序。在使用 ElementCollections 时,我很想知道为什么 org.hibernate.collection.PersistentSet 不能更新?
PersistentSet 中的方法 isRowUpdatePossible() 返回 false。与可更新的 PersistentList 相比,Set 执行多次删除和插入,而不仅仅是更新。
例如,考虑我的实体有一个当前具有值 {1、2、3} 的集合。我通过清除它然后添加 {4、5、6} 来更新集合。在调用 entityManager.merge(entity) 3 时会触发删除和插入查询。
如果在上面的例子中我使用了一个 List,那么只有一个更新查询会被绑定值触发。
当我的数据库可以设法避免列中的重复时,查询的数量使我得出使用列表的结论。
总结问题
- 为什么 org.hibernate.collection.PersistentSet 不可更新?PersistentSet 中的方法 isRowUpdatePossible() 返回 false。
- 当数据库可以处理重复项时,List 比 Set 更好吗?
对这些问题的想法将不胜感激。