gpt4 book ai didi

java - 使用 SELECT CASE WHEN 时 hibernate 错误

转载 作者:行者123 更新时间:2023-12-03 18:15:47 29 4
gpt4 key购买 nike

我正在尝试运行此 Named 查询,如果它找到满足 WHERE 条件的任何记录,则返回 1:

SELECT CASE WHEN EXISTS
(SELECT p
FROM Books p
WHERE bookNum = :bookNum
AND author = :author
AND bookID <> :bookID)
THEN 1
ELSE NULL
END

我使用 EXISTS 使其更快,但我在 TOMCAT SERVER START 上收到此错误。

org.hibernate.hql.ast.QuerySyntaxException: unexpected end of subtree [SELECT CASE WHEN EXISTS (SELECT p FROM com.userclasses.Books p WHERE bookNum = :bookNum AND author = :author AND bookID <> :bookID) THEN 1 ELSE NULL END ] at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54) at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47) at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:82) at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:261) at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185) at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136) at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:101) at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:80) at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124) at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:549) at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:413) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)

我运行了下面的代码来获取 hibernate 版本,正如它在 this link 中所说的那样它是固定的:

System.out.println(org.hibernate.Version.getVersionString());
System.out.println("Hibernate Version: "+ org.hibernate.annotations.common.Version.VERSION);

它在控制台中告诉我这个

3.6.4.Final
Hibernate Version: 3.2.0.Final

最佳答案

这修好了

SELECT CASE WHEN EXISTS
(SELECT p
FROM Books p
WHERE bookNum = :bookNum
AND author = :author
AND bookID <> :bookID)
THEN 1
ELSE NULL
END FROM Books p

但是添加 FROM Books p 不会提高性能,因为它现在将返回列表,而不是单个记录 :(

关于java - 使用 SELECT CASE WHEN 时 hibernate 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36738341/

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