我使用SOUNDEX表達式執行以下JPQL結構來執行拼音拼寫匹配。SOUNDEX不使用JPQL使用JPA
StringBuffer nativeQuery = new StringBuffer();
nativeQuery.append("SELECT gr FROM CodeMaster gr WHERE gr.id.grcpy = ?1 AND (SOUNDEX(gr.id.sourcecode) = SOUNDEX('").append(searchValue).append("') OR SOUNDEX(gr.sourcedescription) = SOUNDEX'").append(searchValue).append("'))")
query = getEntityManager().createQuery(nativeQuery.toString());
但期間的createQuery它給了我下面的錯誤。請讓我知道如果任何事情我做錯了這裏。如果ireplace SOUNDEX與UPPER它工作正常。另外我運行查詢數據庫結果正常提取。
SystemErrřoptimum.clinicals.waf.GeneralFailureException: org.apache.openjpa.persistence.ArgumentException: 「遇到 」SOUNDEX(「 在字符68,但預期:[」(」, 「)」 ,「*」,「+」,「 - 」, 「。」,「/」,「:」,「<」,「< =」,「<>」,「=」,「>」, =「,」?「,」ABS「,」ALL「, 」AND「,」ANY「,」AS「,」ASC「,」AVG「,」BETWEEN「,」BOTH「,」BY「 「 」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」 「ORDER」,「OUTER」,「SELECT」,「ORDER」,「MIN」,「MOD」,「NEW」,「NOT」,「NULL」,「OBJECT」,「OF」,「OR」, 「 ,「SET」,「尺寸」,「某些」,「SQRT」, 「SUBSTRING」「SUM」「TRAILING」「TRIM」「TYPE」「UPDATE」「UPPER」 ,「WHERE」,,,, ,,,, ,,]。「而解析 JPQL」SELECT i FROM InformationSource i WHERE i.id.companynumber =?1 AND(SOUNDEX(i.id.sourcecode)LIKE? 2或SOUNDEX(i.sourcedescription) LIKE?2 ORDER BY i.id.sourcecode「。查看原始 解析錯誤的嵌套堆棧跟蹤。