1

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を比較しているのかわかりません。

誰かがこの問題の修正を手伝ってくれませんか。前もって感謝します。

-テジャ。

4

0 に答える 0