gpt4 book ai didi

java - Hibernate 抛出一个预期的 OPEN,发现 '+'

转载 作者:搜寻专家 更新时间:2023-10-31 19:46:12 26 4
gpt4 key购买 nike

下面是我的hql:

update User set count = count + ?2 where id = ?1

下面有异常详细信息:

org.hibernate.hql.internal.ast.QuerySyntaxException: expecting OPEN, found '+' near line 1, column 71 [update com.yitaosoft.edm.common.persist.entity.User set count = count + ? where id = ?]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:79)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:278)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:182)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:138)

我想更新用户集 count = count + xx where id = xx。但出现语法错误。为什么 ?它不支持 hql 吗??如何解决这个问题??

最佳答案

问题是字段名计数;它是一个保留字,应该被引用。
Expected OPEN表示 HQL 解析器期待 count(<expression>) SQL 表达式而不是 count = ... .唯一的解决方案是使用别名 User并将虚线字段名强制为:

update User u set u.count = (u.count + ?) where id = ?

关于java - Hibernate 抛出一个预期的 OPEN,发现 '+',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22142224/

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