2015-08-21 99 views
0
SELECT d 
FROM YYY d 
WHERE d MEMBER OF :parameter.myCollection 

該查詢有什麼問題?參數是我在上一步中從數據庫中檢索的實體。我不斷收到以下例外情況:將MEMBER OF用於持久實體和持久實體集合

org.apache.openjpa.persistence.ArgumentException:「遇到」d成員:「在字符18處,但預期:[」(「,」*「,」+「,」 - 「,」。「,」/「,」:「,」<「,」< =「,」<>「,」=「,」>「,」> =「,」?「,」ABS「 「ALL」,「AND」,「ANY」,「AS」,「ASC」,「AVG」,「BETWEEN」,「BOTH」,「BY」,「CONCAT」,「COUNT」,「CURRENT_DATE」,「CURRENT_TIME 「,」CURRENT_TIMESTAMP「,」DELETE「,」DESC「,」DISTINCT「,」EMPTY「,」ESCAPE「,」EXISTS「,」FETCH「,」FROM「,」GROUP「,」HAVING「,」IN「 「INDEX」,「INNER」,「IS」,「JOIN」,「KEY」,「LEADING」,「LEFT」,「LENGTH」,「LIKE」,「LOCATE」,「LOWER」,「MAX」,「 「」,「MIN」,「MOD」,「NEW」,「NOT」,「NULL」,「OBJECT」,「OF」,「OR」,「ORDER」,「OUTER」,「SELECT」 「SIZE」「SOME」「SQRT」「SUBSTRING」「SUM」「TRAILING」「TRIM」「TYPE」「UPDATE」「UPPER」「VALUE」「WHERE」 ,,,,,,, ]。「,同時解析JPQL」SELECT d FROM YYY d WHERE d MEMBER OF:parameter.myCollection 「。請參閱嵌套堆棧跟蹤以獲取原始分析錯誤。 at org.apache.openjpa.kernel.jpql.JPQLParser.parse(JPQLParser.java:51) at org.apache.openjpa.kernel.ExpressionStoreQuery.newCompilation(ExpressionStoreQuery.java:154) at org.apache.openjpa。 kernel.QueryImpl.newCompilation(QueryImpl.java:672) at org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:654) at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java: 620) 在org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:682) 在org.apache.openjpa.kernel.QueryImpl.compile(QueryImpl.java:589) 在org.apache.openjpa。 persistence.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:1037) at org.apache.openjpa.persistence.EntityManagerImpl.create NamedQuery(EntityManagerImpl.java:1016)

回答

0

檢查了這一點:

SELECT d 
FROM YYY d 
WHERE d IN :parameter.myCollection 

如何使用 '會員' 和 'IN' 的解釋是here

+0

的問題在於:參數是一個entity和myCollection是該實體中的一個集合字段。所以這是MEMBER OF和IN混合使用。我不確定JPQL是否可以處理這個問題。 –

+0

在我問這個問題之前,我嘗試使用IN,但結果是相同的錯誤。 –