在jpql中选择case语句

时间:2016-06-08 08:36:28

标签: java jpa eclipselink

我尝试过以下但不能正常工作。

String mainQuerySt = "select o.progressStatus, "
+ " CASE WHEN o.assigneeEmployee IS NOT NULL THEN o.assigneeEmployee.fullNameSt ELSE '' END as assignee "
+ " from Tt o"

em.createQuery(mainQuerySt).getResultList();

这有什么问题?实际上,我想显示assigneeEmployee全名,如果它不为null,否则为空字符串。

我使用EclipseLink v2.1作为JPA

感谢advnace。

EclipseLink Tutorial

1 个答案:

答案 0 :(得分:1)

您正在使用o.assigneeEmployee IS NOT NULL,我认为o.assigneeEmployee是一种关系。使用点表示法强制使用内部联接,然后将过滤掉空值。尝试

String mainQuerySt = "select o.progressStatus, "
+ " CASE WHEN assigneeEmployee IS NOT NULL THEN assigneeEmployee.fullNameSt ELSE '' END as assignee "
+ " from Tt o left outer join o.assigneeEmployee assigneeEmployee"

如果它没有返回预期的结果,那么您需要打开SQL日志记录以查看生成的SQL,并显示您期望的结果。