假设两个表, A[a_id, b_id]
和B[b_id,c]
我需要执行形式的HQL查询"From A a ORDER BY abc"
,而b
是在课堂上为空的A
。
查询,但是,只返回的情况下, A
具有非空b
属性。 这是因为休眠生成形式的SQL "SELECT FROM A,B WHERE A.b_id = B.b_id ORDER BY Bc"
什么是返回的所有实例的方式A
与那些null
在b
出现第一个/最后?
假设两个表, A[a_id, b_id]
和B[b_id,c]
我需要执行形式的HQL查询"From A a ORDER BY abc"
,而b
是在课堂上为空的A
。
查询,但是,只返回的情况下, A
具有非空b
属性。 这是因为休眠生成形式的SQL "SELECT FROM A,B WHERE A.b_id = B.b_id ORDER BY Bc"
什么是返回的所有实例的方式A
与那些null
在b
出现第一个/最后?
关于什么 :
from A a left join a.b_fk b order by b.c
左加入照顾使加入的,即使b_fk
在Java实体(不表)属性为null。
编辑 :对不起,我mentionned不同的排序空值。 排序(不考虑空进去),你可以指定“递减”逆排序顺序(默认为“ASC”)。 对于空值,我相信Hibernate允许默认的数据库命令...自己尝试一下你的数据库,看看会发生什么(对不起,在后期的第一个版本误导)。
大量的信息可以Hibernate的参考文档中找到:
http://docs.jboss.org/hibernate/stable/core/reference/en/html/queryhql.html
其余部分通常取决于您使用的数据库...
我有同样的问题,我必须解决这个问题是这样的:
SELECT a
FROM a
LEFT JOIN a.b b
LEFT JOIN b.c c
ORDER BY c.id
这是一个在HQL语法!
该“LEFT JOIN”允许显示线的时候,孩子是NULL。
事实上,如果不指定连接时,Hibernate会自动创建一个“INNER JOIN”,它删除NULL孩子。