我使用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“。查看原始 解析错误的嵌套堆栈跟踪。