我的原因是:java.sql.SQLSyntaxErrorException:ORA-00904:“函数”:hibernate JPA 3.6.7.final版本中的标识符无效

我的原因是:java.sql.SQLSyntaxErrorException:ORA-00904:“函数”:hibernate JPA 3.6.7.final版本中的标识符无效,jpa,Jpa,String queryString=从Vesselarrivalnotice模型中选择model.vesselCode、model.vesselName、countmodel,其中model.vesselCode不为null且+ model.vesselName不为null,model.docStatus='Approved'和function'MONTH',model.actualArriveTime=+MONTH+和function'YEAR',model.actualArriveTime

String queryString=从Vesselarrivalnotice模型中选择model.vesselCode、model.vesselName、countmodel,其中model.vesselCode不为null且+ model.vesselName不为null,model.docStatus='Approved'和function'MONTH',model.actualArriveTime=+MONTH+和function'YEAR',model.actualArriveTime=+YEAR+ 和model.portdetailCode='+port+'和model.companydetailCode='+company+'+ 按model.vesselCode、model.vesselName分组

    Query query = getKpiEntityManager().createQuery(queryString);
createQuery方法需要一个JPQL查询,而您正在提供一个SQL查询。JPQL与SQL相似,但语法不同,不如SQL强大。 您有两个选择:

使用getKpiEntityManager.createNativeQueryqueryString执行SQL查询, 将查询重写为JPQL。但是JPQL不支持函数,因此选项1可能是更好/更容易的选择。
为什么不使用setParameter呢。函数无效,意味着您的orm无法区分它是什么。所以你不应该使用它。您编写的jpa查询必须满足orm而不是数据库的条件。因此,请确保您的orm hibernate在您的案例中理解您的queryPerhaps您的JPA实现不支持JPA2.1,即函数的使用。获取一个支持JPA2.1的JPA实现