下面是我的 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,其中 id = xx。但出现语法错误。为什么 ? hql不支持吗?如何解决这个问题?
问题是字段名计数;它是一个保留字,应该被引用。
Expected OPEN
意味着 HQL 解析器正在等待count(<expression>)
SQL 表达式与非count = ...
。
唯一的解决办法就是别名User
并将点分字段名称强制为:
update User u set u.count = (u.count + ?) where id = ?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)