私は、学生を含むグループを含む学校を持っています。すべての "grand children"要素を削除するHibernate HQLクエリの記述方法?
私は特定の学校からすべての学生を削除したいと思います。 SQLで
私は、次のクエリを記述することができます。
DELETE FROM students1
WHERE students1.group_id IN
(SELECT id FROM group1 WHERE group1.school_id = :school_id)
HQLを休止するために、このSQLクエリを変換する方法は?
私はH2データベースエンジンを使用しています。
(私の実際のクエリはより複雑で簡単なカスケード削除は私には適していません)
ええ、ショートカットをお探しですか?この問合せを直接HQLに変換できるためです。 HqlはIN条件をサポートしています。 –
@ doc_180 HQLでは 'students.group.school.id'を試しましたが、これはうまくいきません。 Javaテーブルクラスは、学生のための関係を持っています:@ManyToOne @JoinColumn(name = "group")プライベートグループグループ。 SQLの場合は単純にidsを使うことができますが、Javaクラスではクラス名を使って参照する必要がありますが、これは以前は行いませんでしたが、これは頻繁な作業であり、簡単な解決策であると思われます – sergtk
はい、溶液。 student.group.school.idは使用しないでください。エンティティ間には関係があるため、in節のエンティティを直接使用してください。 Student.group in(学校から選択したグループのグループから選択) –