2011-12-27 19 views
5

私はお互いに双方向の@OneToOneマッピングを持つ2つのクラスを持っています。Hibernate OneToOneアソシエーションが存在しないエンティティを選択してください

Aのインスタンスが関連付けられていないBのインスタンスをすべて取得するコードを記述する必要があります。また、私は何のB.が

私が試していない持っているすべてのために類似したクエリを記述する必要があります。

Criteria criteria = getSession().createCriteria(B.class) 
criteria.add(Restrictions.isNull("a") 

が、これは常にnullを返すように思われます。思考?

答えて

9

これは両方向のために、動作するはずです:

Criteria criteria = session.createCriteria(B.class, "b"); 
criteria.createAlias("b.a", "a", Criteria.LEFT_JOIN); 
criteria.add(Restrictions.isNull("a.id")); 
+0

作品。なぜisNullが、OneToOneでクエリの間違ったプロパティにnullを追加していたのか理解できませんでした。 – MattC

+1

'Criteria.LEFT_JOIN'が削除されたので、' criteria.createAlias( "b.a"、 "a"、JoinType.LEFT_OUTER_JOIN); ' –

関連する問題