Sql Hibernate分离标准问题

Sql Hibernate分离标准问题,sql,hibernate,hibernate-criteria,detachedcriteria,Sql,Hibernate,Hibernate Criteria,Detachedcriteria,我试图使用hibernate条件执行以下查询。但是,它并没有给我正确的结果 查询: SELECT * FROM TableA a WHERE NOT EXISTS (SELECT * FROM TableB b WHERE b.col1 = a.col1 AND b.flag = 'Y'); 休眠: Criteria criteria = session.createC

我试图使用hibernate条件执行以下查询。但是,它并没有给我正确的结果

查询:

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进行比较

有人能帮忙解决这个问题吗。提前谢谢

-
Teja.

表A和表B是不同的吗?我用tableA生成了与TableB不同的示例,生成的查询如下:选择this_u.id作为id0_0_0,this_0.nombre作为nombre0_0,this_0.activo作为activo0_0_0来自prueba.Actividad this_0如果不存在,选择b_0.activo作为y0_0来自prueba.Cargo b_0,其中this_0.nombre=b_0.nombre和b_0.activo=?