java - 如何编写 Hibernate HQL 查询来删除所有 "grand children"元素?

标签 java hibernate hql

我有学校,其中包含团体,其中包含学生。

我想删除特定学校的所有学生。

在 SQL 中我可以编写以下查询:

DELETE FROM students1 
WHERE students1.group_id IN 
      (SELECT id FROM group1 WHERE group1.school_id = :school_id)

如何将此 SQL 查询转换为 Hibernate HQL?

我使用H2数据库引擎。

(我的真实查询比较复杂,简单的学校级联删除不适合我)。

最佳答案

工作脚本如下:

DELETE FROM Student AS s
WHERE s IN
    (SELECT s FROM Student AS s WHERE s.group IN
        (SELECT g FROM Group AS g WHERE g.school IN
            (SELECT s FROM School s WHERE s.id = :schoolId)))

感谢doc_180的评论

关于java - 如何编写 Hibernate HQL 查询来删除所有 "grand children"元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5299579/

相关文章:

java - 如何使用ListIterator?

hibernate - 我可以仅使用ID设置实体关系吗?

mysql - HQL 当前日期

java - hibernate 标准 : Joining table without a mapped association

java - Cucumber:无法将 DataTable 转换为 List<java.lang.String>。有一个表格单元格转换器,但表格太宽而无法使用

java - 在java中的重载方法中使用更具体的数据类型

Java SWT 当组合框 setEnabled() 为 false 时更改文本颜色

java - MappedSuperclass 和 Embeddable 之间有什么区别,我们应该如何使用

hibernate - 执行此操作需要事务(使用事务或扩展持久性上下文)

java - 将结果从 HQL 转换为对象