Я борюсь с формулировкой аннотации Query
в репозитории данных Spring для следующего сценария.
В целевой таблице есть столбец с именем Role
, который имеет тип данных CLOB
, и он будет содержать один илибольше значений в json.
{
"role" : ["Foo","Bar","Boo"]
}
У меня есть такой репозиторий, который возвращает объект RoleInfo
на основе входного параметра, так что если input равен Foo
, то он совпадает и должен возвращать ожидаемый объект / запись.
RoleInfo findRoleInfo(String role)
Я столкнулся с очень простой операцией crud, в которой role
будет иметь одно значение в тексте.Следующий пример будет работать, если столбец Roles
содержит одно значение Foo
в тексте, но я не уверен, что приведенный ниже синтаксис правильный.Я мог бы попробовать, какие выходные данные или исключения были бы выданы, но тестирование - это довольно дорогая операция в магазине, где я работаю.Прежде чем выполнить тест во время выполнения, я хочу иметь представление о правильном синтаксисе.Буду признателен за ваш совет / комментарий.
@Query("from RoleInfo where role=?1")
Обновление:
После проведенного дня или двух вопрос, который я задал, стал понятен.Мои извинения, если мой первоначальный вопрос был расплывчатым.Ответ был найден чтением из следующей ветки.
Мне нужно было использовать предложение like
в JPQL
.Поскольку программа, с которой я имею дело, использует предыдущую версию данных Spring jpa 1.3.1, я не могу напрямую вставить %
в JPQL
, вместо этого мне пришлось добавить ее в аргумент функции вызывающей стороны.
ТакжеЯ изменил тип данных с CLOB
на varchar2
для столбца с именем Role
.Я получаю ORA-00932 inconsistent data types
ошибку при чтении данных из.Роль могла иметь длинный список символов, но наличие трех строковых значений в CLOB вызвало сомнение в моем выборе типа данных.Максимальная длина символа может быть 4000
байтов для varchar2
типа данных, как многие из вас знают.