jpql select 中的 case 语句

case statement in select in jpql

我已经尝试了以下但没有用。

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 的全名,如果它不为空,否则为空字符串。

我正在使用 EclipseLink v2.1 作为 JPA

提前致谢。

EclipseLink Tutorial

您使用的是 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"

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