假设有两个表,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
带有null
in的那些实例的所有实例的b
第一种/最后一种方式是什么?
关于什么 :
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
其余的通常取决于您使用的数据库......