我試圖訂購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