当前位置: 首页 > 知识库问答 >
问题:

SOUNDEX不使用JPQL与JPA一起工作

羊舌迪
2023-03-14

我使用下面的JPQL结构和SOUNDEX表达式来执行语音拼写匹配。

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过程中,它给了我以下错误…如果我在这里做错了什么事,请让我知道。如果我用鞋面代替音响,它工作得很好。另外,我在数据库上运行了查询,结果是正常获取的。

SystemErr R optimum.clinicals.waf.GeneralFailureException:org.apache.openjpa.persistence.argumentException:“遇到”soundex(“在字符68处”,但需要:[“(”,“)”、“*”、“+”、“-”、“.”、“/”、“:”、“<”、“<=”、“<>”、“=”、“>”、“>=”、“?”、“abs”、“all”、“and”、“any”、“as”、“asc”、“avg”、“beth”、“concat”、“count”、“current_date”、“current_time”、“delete”、“desc”、“distinct”、“empty”、“excape”、“excape”、“desc”、“descint”、“empty”、“excape”、“、”exists“、”fetch“、”from“、”group“、”having“、”in“、”index“、”inner“、”is“、”join“、”key“、”leading“、”left“、”length“、”like“、”locate“、”lower“、”max“、”member“、”min“、”mod“、”new“、”not“、”object“、”of“、”or“、”order“、”select“、”set“、”size“、”some“、”substring“、”sum“、”training“、”trim“、”type“、”update“、”upper“、”value“、”where“、”where“、”where“、”where“、”where.“在解析JPQL时“Select i FROM InformationSource i WHERE i.id.companyNumber=1和(SOUNDEX(i.id.sourcecode)LIKE?2或SOUNDEX(i.sourceDescription)LIKE?2 ORDER BY i.id.sourcecode”。

共有1个答案

琴俊人
2023-03-14

正如消息所说的那样,Soundex不是有效的JPQL关键字/函数。如果确实需要调用专有的SQL函数,那么使用function关键字(如果使用JPA2.1)。更好的办法是在将SQL转储到JPQL查询之前先阅读一些JPQL文档。JPQL!=SQL。

 类似资料:
  • 问题内容: 我是Spring的新手。 我们正在使用Spring Security功能。数据库连接:JPA的eclipselink实现。数据库:MySql 使用spring security时,身份验证提供程序的配置如下- 但是在JPA中,我们没有定义数据源,我们将Persistence unit与provider一起使用 那么,我们如何配置身份验证提供程序,以便将JPA用于数据库连接? 数据源引用

  • Spring Data可以与Google App Engine一起工作,有以下几个提示: null 很多例子都不是“Spring Boot”,所以我一直在尝试用它来改造东西。然而,我已经被这个错误困扰了一天又一天: 其中,我试图将Spring Data JPA与DataNucleus/AppEngine一起使用: 我测试了以查看应用程序是否可以使用这个EMF持久化。问题是与Spring数据JPA的

  • 我有一个烧瓶服务器运行在http://127.0.0.1:5000和一个vuejs前端运行http://localhost:8080我已经做了api,并用postman测试了它,一切都如预期的那样工作:( > 将请求发布到/登录- (将请求发送至/登录)- 烧瓶API代码: 登录。vue: 指数vue 当我使用邮递员登录时,我得到的响应为;当我使用邮递员获取url/索引时,我得到响应。数据但当我使

  • 我注意到我的机器人没有设置RichPresence,就像我今天看它一样。我最后一次检查它是在星期三,代码也在那里工作。所以我今天再次执行它,并且RichPresence没有像往常一样重新设置。现在我认为不和谐会改变它的界面。 现在,我在我的项目中使用了最新的JDA版本,并对代码进行了修改,使数据对象成为JSONObject,但它仍然无法工作。作为第二个,我试图使我的“Spielst”对象成为Ric

  • 根据它的Javadoc,将生成,其中的第一个值是subscribe和第一个next信号之间的经过时间。 以下测试不起作用 它将抛出异常: 我原以为经过的时间至少是1000ms,但结果只有11ms。

  • 在我的Laravel应用程序中,我需要定期使用Guzzle将数据发送到API。 API使用承载令牌进行身份验证,并请求和接受原始JSON。为了进行测试,我使用Postman访问了API,一切都工作得很好。