1

我正在尝试使用休眠条件执行以下查询。但是,它没有给我正确的结果。

询问:

SELECT * 
FROM   TableA a 
WHERE  NOT EXISTS (SELECT * 
               FROM   TableB b 
               WHERE  b.col1 = a.col1 
                      AND b.flag = 'Y');

休眠:

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