我已经尝试了以下方法,但无法正常工作。

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();


这有什么问题?实际上,如果不为null,则要显示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"


如果未返回预期结果,则需要打开SQL日志记录以查看生成的SQL,并显示预期结果。

08-18 00:28