我使用MySQL 5.5與Hibernate 3.6和JPA 2.0。我有一個用戶表,其中firstName也可以是null或空字符串。我想讓這些空的firstName結果保留在我的搜索結果中。對於我寫了下面的SQL查詢它工作得很好:JPA Criteria API在聲明中的順序中使用ISNULL
SELECT * FROM User ORDER BY ISNULL(firstName), firstName = "", firstName ASC LIMIT 100
現在想使用標準的API來此轉換爲JPA,我不十分確定有關的順序。以下是我有:
criteriaQuery = criteriaQuery.orderBy(cb.asc(cb.isNull(users.get(User_.firstName))), cb.asc(cb.equal(users.get(User_.firstName), "")), cb.asc(users.get(User_.firstName)));
然而,上述代碼段中不起作用,因爲CriteriaBuilder.isNull()方法traslated到IS NULL,而不是到MySQL的ISNULL()函數。我得到以下異常:
org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: is null
如何在ORDER BY語句JPA 2.0
所以是有另一種方式來放置空和空字符串項在底部JPA標準API – DevNG
的結果我看到一個解決方案:NativeQueries。 –