Hibernate基準を使用して次のクエリを実行しようとしています。しかし、それは私に正しい結果を与えていません。
クエリ:
SELECT *
FROM TableA a
WHERE NOT EXISTS (SELECT *
FROM TableB b
WHERE b.col1 = a.col1
AND b.flag = 'Y');
Hibernate:
Criteria criteria = session.createCriteria(TableA.class, "a");
DetachedCriteria dc = DetachedCriteria.forClass(TableB.class, "b");
dc.add(Property.forName("b.col1").eqProperty("a.col1"));
dc.add(Restrictions.eq("b.flag","Y"));
dc.setProjection(Property.forName("b.col1"));
criteria.add(Subqueries.notExists(dc));
生成しているクエリは-
select * from TableA a where not exists (select b.col1 from TableB b where **b.col1=b.col1** and b.flag='Y');
ここで、なぜb.col1とb.col1を比較しているのかわかりません。
誰かがこの問題の修正を手伝ってくれませんか。前もって感謝します。
-テジャ。