Как создать подзапрос, который использует listagg в репозитории JPA? - PullRequest
0 голосов
/ 02 марта 2020

Использование классов спецификации JPA или построителя предикатов. Как я могу преобразовать это предложение WHERE? Я использую oracle дБ.

WHERE (SELECT listagg(reject_cd,':') within group (order by order_no) as rejectList 
FROM REJECT_TABLE WHERE ID = transactio0_ id group by id) like '%06%'

1 Ответ

0 голосов
/ 02 марта 2020

Функция LISTAGG строго указана от c до Oracle и не поддерживается JPQL. Тем не менее, вы все равно можете использовать собственный запрос, например,

@Query(
    value = "SELECT ... WHERE (SELECT LISTAGG(reject_cd,':') WITHIN GROUP (ORDER BY order_no) AS rejectList FROM REJECT_TABLE WHERE ID = transactio0_ id GROUP BY id) LIKE '%06%'"
    nativeQuery = true)
Collection<SomeEntity> findAllEntitiesNative();

Другой вариант здесь может заключаться в том, чтобы найти способ избежать необходимости использовать LISTAGG. Но нам нужно увидеть полный запрос вместе с образцами данных, чтобы лучше понять ваши требования.

...