Hibernate - 替换集合

时间:2016-08-25 17:29:15

标签: java hibernate spring-boot

所以我的POI就是你有一个@Entity的集合。假设您使用一组项目获取实体。现在让我们假设集合中有条目。 我的问题是:如果替换具有以下内容的集合会发生什么:

Item(id: 1, name: "box"), Item(id:2, name: "plate)

有一个集合:

Item(id:2, name: "puppy")

所以:如果删除orphans为true且启用了级联,则id == 1的项目将消失。但是当替换id == 2的项目时,它是否会更新为标签“puppy”而不是“plate”?

使用@Transactional时弹簧启动有什么问题?

1 个答案:

答案 0 :(得分:2)

如果您在会话中提取了一个集合,则不应该"替换"它有一个新的。相反,您应该更新现有的。

如果要从此集合中删除条目,请获取迭代器并调用"删除"在那条目上。如果要更新条目,只需将其删除并进行更新即可。您之前未触及的上一个条目将保留在DB中。

"删除孤儿"如果您已经迭代了集合并删除了一些条目,则会出现。所以父母和孩子之间的联系不再存在,你不希望孩子独立生存。

这可能也有帮助 - Hibernate deleting orphans when updating collection