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
提前致谢。
您使用的是 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,并显示您预期的结果。
我已经尝试了以下但没有用。
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
提前致谢。
您使用的是 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,并显示您预期的结果。