Запрос Spring JPA с предложением «где значение в (выберите идентификатор из другой таблицы)»

#java #spring-data-jpa

#java #spring-data-jpa

Вопрос:

Я хочу написать JPA-запрос, который извлекает все мои объекты, соответствующие простому условию (столбец = логическое значение) и более сложным условиям, т. Е. Идентификатор объекта должен содержаться в другой таблице. MyEntity не имеет никакого отношения к этой другой таблице.

Мое предположение не работает:

 @Query(value =
    "select msr "  
    "from MyEntity msr "  
    "where msr.archived=false "  
    " AND msr.id in 
        (select sc.res from search_campaign_results sc 
        where search_campaign_id=:campaign)")
Page<MyEntity> findResultsNotAnalyzed(Pageable pr, @Param("campaign") Long campaign);
 

Конечно, ошибка «search_campaign_results не сопоставлен», что правильно.

Как я могу это исправить, не написав полностью собственный запрос?

Комментарии:

1. Почему недостаточно написать собственный запрос в форме @Query(value = "...", countQuery = "...", nativeQuery = true) (см. Пример 64 в «Spring Data JPA — Справочная документация» )? Каким-то образом, особенно если таблица подвыборки не имеет представления сущности, я не думаю, что есть более простое решение.

2. @hjoeren этого достаточно, но тогда я должен явно записать другие объединения таблиц