Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 外部联接到子查询的条件查询_Java_Sql_Hibernate - Fatal编程技术网

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

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或

我有两张桌子,表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映射到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,没有。在标准中,肯定没有。