1

我正在使用 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。我可能做错了什么?

4

1 回答 1

0

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

示例:Eclipselink JPA 缓存

于 2013-04-24T17:52:01.883 回答