外部联接到子查询的条件查询

时间:2011-08-01 10:20:38

标签: java sql hibernate

我有两个表,tableA和tableB:

tableA: int id, String val
tableB: int id, String logs, int a_ref.

我需要创建一个查询,例如:

SELECT tabB.* FROM tableB tabB
LEFT OUTER JOIN tableA tabA ON tabA.id = tabB.a_ref;

但我无法更改元数据(修改各个表的Hibernate映射文件(.hbm))。

如何在hibernate中为此创建条件查询?

提前致谢。

1 个答案:

答案 0 :(得分:1)

HQL或Criteria查询基于实体和实体之间的关系,而您没有向我们展示实体,因此我们只能推测。如果TABLEA映射到TableATABLEB映射到TableB,并且TableB和TableA之间存在多对一关联,则查询显而易见:

select b from TableB b left join b.tableA

但请注意,左连接在这里完全没用,因为它不会对查询添加任何限制,并且查询不会从TABLEA中选择任何内容。您的初始SQL查询应该写为select tabB.* from TABLEB tabB。因此标准查询就是

Criteria c = session.createCriteria(TableB.class)