我试图订购querydsl查询,以便所有具有空值关系的实体首先被排序,但我无法弄清楚如何去做。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
的所有书籍,即使它没有,它也会根据名称对它们进行排序,但我只希望它们排除该值是否为空。
Hibernate的版本:3.6.6.Final
QueryDSL版本:3.2.3
感谢[这个Bug修正(https://github.com/querydsl/querydsl/issues/582)看起来与查询DSL 3.3.0或更高的'QBook.book.original.name.asc()。nullsFirst()'至少会包含空值,这要归功于左连接。 – CorayThan 2015-02-23 23:00:55
你是否试过用更新版本的Querydsl? – 2015-02-25 20:43:02
现在尝试升级Querydsl并不现实,但希望我们能够在不久的将来升级它。 – CorayThan 2015-02-25 21:25:56