Java hibernate中的批量删除/更新:最佳方法?

Java hibernate中的批量删除/更新:最佳方法?,java,hibernate,jpa,Java,Hibernate,Jpa,我知道hibernate甚至JPA?批量删除操作不会级联到相关实体 假设您有以下实体A、B和C。 B与a有多个一元的关系,但这并不是反向的,所以a没有B的列表。 C与B之间有多个一元的关系,但这并不是反向的,所以B没有C的列表 现在,如果A被删除,那么我希望所有引用A的B都被删除,所有引用B的C也被删除。由于没有级联,我需要自己传播这些删除。因此,问题是什么是实现这一目标的最佳方法: sql从C中删除,其中select中的b_id来自b,其中select id中的a_id来自a。。。 使用hib

我知道hibernate甚至JPA?批量删除操作不会级联到相关实体

假设您有以下实体A、B和C。 B与a有多个一元的关系,但这并不是反向的,所以a没有B的列表。 C与B之间有多个一元的关系,但这并不是反向的,所以B没有C的列表

现在,如果A被删除,那么我希望所有引用A的B都被删除,所有引用B的C也被删除。由于没有级联,我需要自己传播这些删除。因此,问题是什么是实现这一目标的最佳方法:

sql从C中删除,其中select中的b_id来自b,其中select id中的a_id来自a。。。 使用hibernate:加载A的所有C,然后删除这些实体,然后加载A的所有B,然后删除这些实体;最后删除一个 ???
我认为HQL是更好的选择

您可以使用hibernate执行本机sql语句。例如,您可以这样写:

session.createSQLQuery("delete from C where b_id IN (select is from B where a_id in (select id from A ...");

您可以查看本指南

+1如果您通过JPA使用Hibernate,我还建议您使用JPQL。