我正在尝试使用休眠条件执行以下查询。但是,它没有给我正确的结果。
询问:
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 进行比较。
有人可以帮助解决这个问题。提前致谢。
——泰迦。