【发布时间】:2012-11-17 16:11:17
【问题描述】:
当我连接 em.CreateQuery concat 中的字段时返回 NULL,因为我的字段之一可能有 NULL。我想在 Native MSSQL ISNULL(field,'somthing') 函数中检查 NULL。
MyQuery 是。
entManager.createQuery("SELECT NEW " + ThumbNail.class.getName() + "(p.id,p.thumbnail,p.thumbNailModifiedDate, CONCAT(p.firstName,' ',p.lastName,' ',p.middleName)) FROM Person p").setHint("eclipselink.refresh", "true").getResultList();
这个也试过
entManager.createQuery("SELECT NEW " + ThumbNail.class.getName() + "(p.id,p.thumbnail,p.thumbNailModifiedDate, CONCAT(FUNC('ISNULL',p.firstName,''),' ',FUNC('ISNULL',p.lastName,''),' ',FUNC('ISNULL',p.middleName,'')) FROM Person p").setHint("eclipselink.refresh", "true").getResultList();
它没有用
【问题讨论】:
-
如果您使用的是本机函数,则可以使用本机查询 ->
entManager.createNativeQuery("Native SQL");Eclipselink 和 JPA 通常可以很好地处理空值,所以我没有看到您的问题,但如果有充分的理由因为它的原生查询即使不可移植也很容易。 -
感谢您的回复。但是我不能用本机查询来做到这一点,因为 p.thumbnail 是我的资源类。我已经用原生查询试过了。这里是。从日志中复制并更改为: entManager.createNativeQuery("SELECT t0.ID , t1.ID,t0.THUMB_NAIL_ID, t1.CREATION_DATE, t1.FROM_MODULE, t1.CHANGE_DATE, t1.RESOURCE_BYTE, t1.DIGEST, t1.RESOURCE_TYPE, t0.MODIFIED_DATE, ISNULL(t0.FIRST_NAME,'') + ' ' + ISNULL(t0.LAST_NAME,'') + ' ' + ISNULL(t0.MIDDLE_NAME,'') FROM INTERDIR_PERSON t0 LEFT OUTER JOIN INTERDIR_RESOURCES t1 ON (t1 .ID = t0.THUMB_NAIL_ID)",ThumbNail.class).getResultList();出现错误。
-
Func 已添加到 Eclipselink 2.1,因此在您下面提到的 EL 2.0.1 中不可用。对于 JPA 2.1 规范,它被 EclipseLink 2.4 中的 FUNCTION 取代:wiki.eclipse.org/EclipseLink/UserGuide/JPA/…
-
迁移到更高版本的 EclipseLink 时会不会与其他查询发生冲突?
标签: jpa null eclipselink jpql concat