我正在努力在Spring数据存储库中为以下情况制定Query
批注。
目标表中有一个名为Role
的列,其数据类型为CLOB
,它将在json中包含一个或多个值。
{
"role" : ["Foo","Bar","Boo"]
}
我有这样的存储库,该存储库将根据输入参数返回RoleInfo
对象,因此,如果输入为Foo
,则它将匹配并应返回预期的对象/记录。
RoleInfo findRoleInfo(String role)
我接触过非常简单的操作,其中role
在文本中将具有单个值。如果Roles
列的文本中包含单个值Foo
,以下示例将起作用,但我不确定以下语法是否正确。我可以尝试抛出什么输出或异常,但是在我工作的商店中进行测试有点昂贵。在执行运行时测试之前,我想对正确的语法有所了解。非常感谢您的建议/意见。
@Query("from RoleInfo where role=?1")
更新:
花了一两天后,我问的问题变得很清楚。如果我最初的问题不清楚,我要道歉。从以下线程中读取了答案。
我需要使用like
中的JPQL
子句。由于我要处理的程序使用的是Spring Data jpa 1.3.1的早期版本,因此无法将%
直接注入JPQL
中,而不得不将其添加到调用方函数的参数中。
我也将名为CLOB
的列的数据类型从varchar2
更改为Role
。我从读取数据时遇到ORA-00932 inconsistent data types
错误。该角色可能会有很长的字符列表,但是CLOB中有三个字符串值导致Oracle质疑我对数据类型的选择。众所周知,4000
数据类型的最大字符长度可以为varchar2
个字节。