oracle 在HQL中使用JSON_TRANSFORM更新不起作用

smtd7mpg  于 2023-03-22  发布在  Oracle
关注(0)|答案(1)|浏览(181)

我需要更新和检索一个将数据存储为JSON的现有列。

**数据库:**Oracle
**表列类型:**Clob
**列数据:**json

我正在使用HQL createQuery来检索数据,下面的查询可以正常工作。这里defaultValue可以是0或1。我正在尝试检索defaultValue为1的id,并且工作正常。
"select id from MyDetails where json_value(details, '$.defaultValue') =:defaultValue1"
在任何给定的时间,只有一条记录可以将defaultValue设置为1。因此,当创建一条新记录时,如果之前的记录为1,我需要将其他记录的json属性defaultValue更新为0。因此,我尝试下面的HQL查询。
"update MyDetails set details = json_transform(details, set '$.defaultValue' =:defaultValue0) where json_value(details, '$.defaultValue') =:defaultValue1"
然而下面的语句抛出异常
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: details near line 1, column 54 [update com.xxx.MyDetails set details = json_transform(details, set '$.defaultValue' =:defaultValue0) where json_value(details, '$.defaultValue') =:defaultValue1]
在Oracle SQL Developer上测试时,select和update查询都工作正常。
请帮我找出解决问题的正确方法

rslzwgfq

rslzwgfq1#

HQL中的JSON函数支持目前是being discussed for Hibernate ORM,但仍然没有正式支持。
我建议现在尝试使用原生查询来与这类函数交互。

相关问题