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