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 のみがスローされます。私は何が間違っているのでしょうか?