2

我想要这个sql:

SELECT COUNT(*) FROM table1 t1, table2 t2 
WHERE t1.id > 0  
AND (( t1.name = 'foo') 
    OR ( t1.id2 = t2.id AND t1.name = 'det')) 

如果我为 table2 使用别名:

detachedCriteria.createAlias("table2", "t2");

并设置如下:

detachedCriteria.add(Restrictions.eqProperty("t1.id2", "t2.id"));

Hibernate 总是在 SELECT 查询中生成我不想要的 INNER JOIN,这给了我错误的结果。

select count(*) as y0_ 
from
    table1 this_ 
inner join
    table2 table2_ 
        on this_.id2=table2_.id 
where 
...

如何在 WHERE 子句(t1.id2 = t2.id)中实现“INNER JOIN”而不是在 SELECT 中?

4

1 回答 1

0

使用 Criteria API,您不能。您只能从根实体查询并创建别名或子条件,以通过它们的关联导航到其他实体。使用此 API 无法同时从两个实体中进行选择。不过,可以使用 HQL。

于 2012-10-17T18:32:25.137 回答