と言う2つのクラスがAありBます。
AのセットをBプロパティとして持っています。BについてはわかりませんA。
Class A {
@OneToMany(fetch=FetchType.LAZY)
@JoinTable(name = "A_B_MAPPING", joinColumns = @JoinColumn(name = "A_ID") , inverseJoinColumns = @JoinColumn(name = "B_ID"))
private Set<B> bs;
}
A問題は、を持たないレコードを削除したい場合B、HQL がそれを理解できないことです。私のコードは次のようなものです:
String hql = "DELETE FROM A WHERE bs IS NULL";
Query query = getSession().createQuery(hql);
query.executeUpdate(); // <-- Here an exception is thrown
どうやら、HQL はこのプロパティが列ではないことを理解できず、に結合する必要がありA_B_MAPPINGます。また、生成されたクエリがこのプロパティ
を!として
参照していることにも気付きました。bsnon-qualified-property-ref
問題は、目標を達成するためにクエリをどのように変更できるかということです。