java - 如何在JPA中有效地截断多对多表?

标签 java hibernate jpa

我有一个 JPA 多对多关系。

删除此关系的所有条目的最简单方法是执行 findAll(),清除关联集合并刷新 session 。

在我的例子中,这意味着将 ~1'000'000 个实例加载到 ram 中只是为了将它们全部删除。这并不是真正有效。

我可以求助于 SQL 并简单地截断连接表。在 JPA 中是否有有效的方法来做到这一点?

最佳答案

您需要将 m-m 表映射为附加实体,并使用 delete statement 删除它。 。如果表未映射到实体,则无法通过删除语句删除它。如果你只是想删除m-m关系,这应该足够了。如果您还想删除相关实体,则应该将它们映射到新的 m-m 实体,并在删除时使用级联标记关系。

关于java - 如何在JPA中有效地截断多对多表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32330413/

相关文章:

java - Hibernate:没有为实体指定标识符(是的,我已经用@Id装饰了......)

Javafx、Maven、Hibernate,无法在第 0 行和第 0 列处执行解码

java - Spring STS DB 与 Jpa 的连接

java - 如何在hibernate中映射java属性

java - 如何解决 java.io.NotSerializableException : com. google.appengine.datanucleus.query.JPQLQuery?

c# - 适合在沙箱中运行客户端代码的语言

java - 批量插入修改后启动 Neo4j 服务器变慢

java - 创建一个 HQL 查询,该查询将获取集合中的每个项目并进行比较

java - 如何使用Spring的rest模板对查询参数的整个xml值进行URL编码?

c# - 通过 Java 客户端连接到 WCF 服务