HQL:为了通过可为空属性的属性(HQL: order by property of nullabl

2019-09-23 12:30发布

假设两个表, 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与那些nullb出现第一个/最后?

Answer 1:

关于什么 :

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

其余部分通常取决于您使用的数据库...



Answer 2:

我有同样的问题,我必须解决这个问题是这样的:

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孩子。



文章来源: HQL: order by property of nullable property
标签: hql