如何在Hsql中执行外连接

时间:2011-12-08 19:09:49

标签: java hibernate informix hsqldb

我有这样的查询

SELECT * from table1 t1,table2 t2, OUTER table3 t3

这适用于Informix数据库但是当我将它用作Hsql时,它无法找到它 仅限“OUTER”关键字...如何在Hibernate中进行外连接?

3 个答案:

答案 0 :(得分:4)

HSQLDB支持标准SQL语法,这与您的Informix语法查询不同。这种语法的一些例子:

SELECT * from table1 t1 NATURAL JOIN table2 t2 NATURAL LEFT OUTER JOIN table3 t3

SELECT * from table1 t1 JOIN table2 t2 ON (T1.X = T2.Y) LEFT OUTER JOIN table3 t3 ON (T2.Z = T3.X)

您应该将查询调整为标准语法。

您在评论中报告的查询将以这种方式转换为标准SQL:

SELECT distinct sd.student_id, ss.sports_id, sf.fee_desc FROM STUDENTDETAILS sd
JOIN STUDENTSPORTS ss ON ss.sports_id = sd.sports_id LEFT OUTER JOIN STUDENTFEES sf 
ON ??? 

请注意,您需要一个问号条件。例如,STUDENTSFEES中的id需要等于STUDENTSSPORTS中的id。 sf.some_id = ss.some_id

答案 1 :(得分:1)

假设你的实体和映射文件设置正确,那将是一个非常简单的“左外连接实体。字段作为别名”

来自HQL网站

from Cat as cat
inner join cat.mate as mate
left outer join cat.kittens as kitten

HQL website

在你把表作为实体的情况下,它就像是     从table1作为tab1     内连接tab.table2column为tab2     左外连接tab.table3列为tab3

答案 2 :(得分:0)

HQL和SQL是两种不同的语言。 SQL使用表和列,HQL使用实体之间的实体,字段和关联。

阅读Hibernate reference documentation