我有两个表,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中为此创建条件查询?
提前致谢。
答案 0 :(得分:1)
HQL或Criteria查询基于实体和实体之间的关系,而您没有向我们展示实体,因此我们只能推测。如果TABLEA
映射到TableA
且TABLEB
映射到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)