我正在尝试根据另一个表的两个可能列之一在一个表中设置一列。 由于 HQL 更新不支持联接,我正在尝试解决并OR
在set
语句中使用 an,但是,我无法找到很多关于它的文档。
类似的查询似乎在某些风格的 SQL 中工作,但我似乎无法让它在 Groovy 的 HQL 中工作:
String queryString = """
update Foo foo
set foo.myValue = (
(foo.fooType = :typeBar AND :barFlag = true) OR
(foo.fooType = :typeBaz AND :bazFlag = true)
)"""
Map args = [
typeBar: Type.BAR,//String
typeBaz: Type.BAZ,//String
barFlag: bar,//Boolean
bazFlag: baz,//Boolean
]
Foo.executeUpdate(queryString, args)
我得到的例外是:
org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: OR near line ...