Как использовать функции массива в запросе JPA без использования собственного запроса?JAVA

Программисты JAVA общаются здесь
Anonymous
Как использовать функции массива в запросе JPA без использования собственного запроса?

Сообщение Anonymous »

Я хочу использовать функцию array_overlaps () в запросе JPA, не прибегая к собственному запросу.
Вот мое определение @Query:

Код: Выделить всё

  @Query(value = """
SELECT view FROM FilterView view
WHERE (:selectedIds IS NULL
OR array_overlaps(view.ids, (:selectedIds)) IS true)
""")
List findAllByFilter(Collection selectedIds);
< /code>
В этой конфигурации я столкнулся с следующей ошибкой времени выполнения: < /p>
Caused by: org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint[] && bytea
< /code>
Ошибка предполагает, что параметр SelectedIDS рассматривается как Bytea, даже если он определяется как сбор в подписи метода, что я не до конца понимаю, почему. Это приводит к несоответствию типа. Полем Например, CAST (: SelectedIds As Collection ) 
дает ошибку компиляции.
Я также попытался обернуть параметр элементами (: selectedids) , Но это также приводит к ошибке компиляции: < /p>

Код: Выделить всё

Caused by: org.hibernate.query.sqm.produce.function.FunctionArgumentException:
Parameter 1 of function 'array_overlaps()' requires an array type
java.util.Collection, but argument is of type 'java.lang.Object'
Как я могу правильно передать коллекцию в качестве параметра массива в JPA, чтобы array_overlaps () работает без использования собственного запроса? Есть ли альтернативный способ представлять массивы в JPA, который избегает проблемы конверсии байтов?

Подробнее здесь: https://stackoverflow.com/questions/794 ... tive-query

Вернуться в «JAVA»