java - Hibernate - 替换集合

标签 java hibernate spring-boot

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

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

其集合具有:

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

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

使用 @Transactional 时 Spring Boot 有哪些问题?

最佳答案

如果您在 session 中获取了一个集合,则不应将其“替换”为新集合。相反,您应该更新现有的。

如果您想从此集合中删除一个条目,请获取迭代器并为该条目调用“remove”。如果您想更新某个条目,只需将其取出并更新即可。您未触及的上一个条目将按原样保留在数据库中。

如果您迭代了集合并删除了其中的一些条目,“delete-orphans”就会出现。所以 parent 和 child 之间的联系不再存在,你也不希望 child 独立生存。

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

关于java - Hibernate - 替换集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39151376/

相关文章:

java - 使用 Hibernate 和 JPA 构建 EntityManagerFactory

java - Spring 数据保存与 saveAll 性能

hibernate - GORM : automatically prefix each table name with the domain class namespace

java - Spring RestTemplate - 错误处理

java - Spring 启动 : run liquibase migrations without starting app

java - Java 中是否有零时间、启动(无需重新编译)可切换条件标志?

java - 由于 NoSuchProviderException smtp 无法发送电子邮件

java - 了解 web.xml 中的 url 模式

java - NanoHTTPD:确定请求的来源

java - 在 Spring 中使用自定义解析器返回 HTTP 状态 BAD_REQUEST