如何使用“order by”子句对可能为null的属性编写JPA查询

时间:2012-02-09 20:47:28

标签: java jpa

我已经为另一个JPA实体“B”定义了一个与@ManyToOne关系的JPA实体“A”。

@Entity
class A {

    String name;

    int sortOrder

    @ManyToOne
    B b;

}

此引用可以为null,也可以填充。现在,我想查询所有的As并按B.name排序。不幸的是,像是

find("order by B.name, sortOrder, name")

似乎放弃了任何这样的(A.b = null)。编写此查询的最佳方法是什么?

我想要所有的As,我希望它们按照B.name引用排序(如果它存在)...将所有那些没有B属性的方法整合在一起。

2 个答案:

答案 0 :(得分:2)

你需要一个左连接。

select a from A a left join a.b b order by b.name, a.sortOder, a.name

或类似的东西。

答案 1 :(得分:0)

有几种方法......集/比较器,HQL,Native Sql,@ Sort注释......