【发布时间】:2015-02-23 20:16:08
【问题描述】:
我正在尝试订购一个 querydsl 查询,以便首先订购所有具有空值关系的实体,但我不知道该怎么做。
我希望:
query.orderBy(
QBook.book.original.isNull().asc()
)
成为我所需要的,其中original 是与Book 的自引用关系。
但这会产生异常:
Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: is null
[select book
from com.mydomain.Book book
order by book.original is null asc]
(真正的例外要长得多,但这应该是所有相关信息。)
我也试过
QBook.book.original.name.asc().nullsFirst()
但这有两个问题。首先,它消除了所有没有original 的书籍,即使没有,它也会根据名称对它们进行排序,而我只希望它们根据该值是否为空进行排序。
休眠版本:3.6.6.Final
QueryDSL 版本:3.2.3
【问题讨论】:
-
感谢this bug fix,由于左连接,查询 dsl 3.3.0 或更高版本
QBook.book.original.name.asc().nullsFirst()至少包含空值。 -
您是否尝试过使用更新版本的 Querydsl?
-
现在尝试升级 Querydsl 不太现实,但希望我们能够在不久的将来升级它。
标签: java hibernate jpa querydsl