JPA NamedQuery返回空ResultList

时间:2013-04-24 17:22:31

标签: java jpa eclipselink ibm-midrange

我正在使用Netbeans 7.3,Glassfish 3.1.2.2开发一个使用EclipseLink JPA 2.0连接到AS400的应用程序。所有查询都正常工作,直到我找到一个特定的NamedQuery:

SELECT u FROM Table1 u WHERE u.field1 IN (:field1) 
AND SUBSTRING(u.field2,3,1) IN (:hack) AND 
SUBSTRING(u.field3,2,2) IN (:field3) ORDER BY u.field1

参数设置如下:

Query query = getEntityManager().createNamedQuery("Table1.findAllWithRestrictions").setParameter("hack", "'S','C'").setParameter("field1", start).setParameter("field3", finish);

查询执行但返回空列表。打开日志记录会为我生成SQL:

SELECT FIELD1, FIELD2, FIELD3, FIELD4, FIELD5, FIELD6 
FROM ABC.DATAB.TABLE1 WHERE (((FIELD1 IN ('00')) AND 
(SUBSTR(FIELD2, 3, 1) IN ('S','C'))) AND 
(SUBSTR(FIELD3, 2, 2) IN ('0S'))) ORDER BY FIELD1 ASC

针对同一数据库连接运行此生成的SQL会返回多行。在任何地方的日志中都没有抛出异常,只有一个空的ResultList。我能做错什么?

1 个答案:

答案 0 :(得分:0)

出于性能原因,JPA的某些实现采用缓存(例如EclipseLink)。如果数据库中的数据与正在运行的应用程序中看到的内容不一致,我会尝试重新启动。此外,您可能希望看一下刷新缓存或禁用缓存的方法。

示例:Eclipselink JPA caching