我需要通过一个字段(如果不为null)来查询查询结果,否则需要另一个字段。
这是我的代码:
Expression condizione=cb.isNotNull(root.get(Attribuzione_.dataprincipale));
Expression principale=root.get(Attribuzione_.dataprincipale);
Expression creato=root.get(Attribuzione_.recordcreato);
Order ord=cb.desc(cb.selectCase()
.when(condizione, principale)
.otherwise(creato));
cq=cq.orderBy(ord);
此代码导致
Internal Exception: org.postgresql.util.PSQLException
因为SQL代码中的翻译不是“排序依据”,所以我需要:
ORDER BY CASE WHEN (t0.dataprincipale IS NOT NULL) THEN (t0.dataprincipale IS NOT NULL) ELSE t0.rec_creato END DESC
代替
ORDER BY CASE WHEN (t0.dataprincipale IS NOT NULL) THEN t0.dataprincipale ELSE t0.rec_creato END DESC
但是我不明白代码中的错误在哪里。
有什么建议吗?
谢谢
最佳答案
如果您使用的是EclipseLink 2.3.x或更早版本,请尝试升级到最新版本。
我已经用2.3.x测试了您的代码,但失败了,但是从2.4.x接缝开始可以正常工作。
关于java - Java Persistence Criteria API-orderBy()中的案例表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37325250/