HQL:可为空的属性按属性排序

Bor*_*ner 5 hql

假设有两个表,A[a_id, b_id]B[b_id,c]

我需要执行HQL形式的查询"From A a ORDER BY a.b.c",而b在类中可以为空A

但是,该查询仅返回A具有非null b属性的实例。发生这种情况是因为Hibernate生成形式为SQL的SQL"SELECT FROM A,B WHERE A.b_id = B.b_id ORDER BY B.c"

返回A带有nullin的那些实例的所有实例的b第一种/最后一种方式是什么?

KLE*_*KLE 0

关于什么 :

from A a left join a.b_fk b order by b.c
Run Code Online (Sandbox Code Playgroud)

b_fk即使java 实体(而不是表)上的属性为 null ,左连接也会负责进行连接。

编辑:抱歉,我提到对空值进行不同的排序。要排序(不考虑空值),您可以指定“desc”来反转排序顺序(默认=“asc”)。对于空值,我相信 Hibernate 让默认数据库顺序...在您的数据库上亲自尝试一下,看看会发生什么(很抱歉在帖子的第一个版本中产生误导)。

很多信息可以在 Hibernate 的参考文档中找到:
http://docs.jboss.org/hibernate/stable/core/reference/en/html/queryhql.html

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