gpt4 book ai didi

java - 函数和运算符在 Eclipselink 中不起作用

转载 作者:行者123 更新时间:2023-12-02 11:17:46 25 4
gpt4 key购买 nike

我遇到这个问题,REPLACE 功能不适用于 eclipselink 版本 2.5.2。

这是我的代码:

String sSql = " SELECT e FROM br.com.megasoft.protocolo.entity.Assunto e  WHERE  ( REPLACE(REPLACE(REPLACE( UPPER(e.titulo), '/', ''), '-', ''), '.', '') LIKE  UPPER('A') )";
TypedQuery<?> query = getEntityManager().createQuery(sSql, Class.forName(this.tabela));

第二个参数的值为:class br.com.megasoft.protocolo.entity.Assunto

它给出了这个异常(exception):

Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Syntax error parsing [ FROM br.com.megasoft.protocolo.entity.Assunto e WHERE ( REPLACE(REPLACE(REPLACE( UPPER(e.titulo), '/', ''), '-', ''), '.', '') LIKE UPPER( :valorPesq10) ) ].
[54, 150] The expression is not a valid conditional expression.
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildException(HermesParser.java:155)
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.validate(HermesParser.java:334)
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:278)
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildQuery(HermesParser.java:163)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:142)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:116)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:102)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:86)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1603)
... 50 more

当我使用 Hibernate 时,它​​工作得很好。

当我运行简单的 SQL 时,没有REPLACE,它工作得很好。

观察:Eclipselink 2.5.2 使用 JPA 2.1。我正在使用 Tomcat8、Eclipse Kepler。

最佳答案

我已经找到解决方案了,谢谢大家提供的有用信息。

sql 需要这样:

SELECT e FROM br.com.megasoft.protocolo.entity.Assunto e  WHERE  FUNCTION('REPLACE',  e.titulo, '/', '') LIKE  UPPER('A')

这样,我将使用 JPA 2.1 规范中定义的FUNCTION

关于java - 函数和运算符在 Eclipselink 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26266384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com