Java 外部联接到子查询的条件查询
我有两张桌子,表A和表B:Java 外部联接到子查询的条件查询,java,sql,hibernate,Java,Sql,Hibernate,我有两张桌子,表A和表B: 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中为此创建条件查询 提前感谢。HQL或
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中为此创建条件查询
提前感谢。HQL或条件查询基于实体和实体之间的关系,您没有向我们显示您的实体,因此我们只能推测。如果TABLEA映射到TABLEA,TABLEB映射到TABLEB,TABLEB和TABLEA之间存在多对一关联,那么查询很明显:
select b from TableB b left join b.tableA
但是请注意,左连接在这里是完全无用的,因为它没有向查询添加任何限制,查询也没有从表中选择任何内容。您的初始SQL查询应该很好地编写为select tabB.*from tabB tabB。因此,条件查询将是
Criteria c = session.createCriteria(TableB.class)
HQL或条件查询基于实体和实体之间的关系,而您没有向我们显示您的实体,因此我们只能推测。如果TABLEA映射到TABLEA,TABLEB映射到TABLEB,TABLEB和TABLEA之间存在多对一关联,那么查询很明显:
select b from TableB b left join b.tableA
但是请注意,左连接在这里是完全无用的,因为它没有向查询添加任何限制,查询也没有从表中选择任何内容。您的初始SQL查询应该很好地编写为select tabB.*from tabB tabB。因此,条件查询将是
Criteria c = session.createCriteria(TableB.class)
hbm文件中的TableA和TableB之间没有关联。如果不使用本机SQL查询或修复映射,则无法执行联接。我是否可以创建如下查询:-选择tabB.*从TableB tabB left outer join选择tabA_.ID from tabA tabA_参考上的refer.ID=tabB.a_ref;在HQL中,AFAIK,没有。在标准中,肯定,否。hbm文件中的TableA和TableB之间没有关联。那么,如果不使用本机SQL查询或修复映射,您将无法执行联接。我是否可以创建类似这样的查询:-选择tabB.*从TableB tabB左侧外部联接从TableA tabA选择tabA_.ID从TableA tabA_________________________________;在HQL中,AFAIK,没有。在标准中,肯定没有。