我有这样的查询
SELECT * from table1 t1,table2 t2, OUTER table3 t3
这适用于Informix数据库但是当我将它用作Hsql时,它无法找到它 仅限“OUTER”关键字...如何在Hibernate中进行外连接?
答案 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
在你把表作为实体的情况下,它就像是 从table1作为tab1 内连接tab.table2column为tab2 左外连接tab.table3列为tab3
答案 2 :(得分:0)
HQL和SQL是两种不同的语言。 SQL使用表和列,HQL使用实体之间的实体,字段和关联。