2014-01-29 10 views
0

Я в ситуации, когда у меня есть два объекта, давайте скажем A и B, в B У меня есть отношения ManyToOne с A.But in A У меня нет oneToMany. Я использую репозитории Spring-Data, и мне было интересно, возможно ли сделать subQuery с помощью аннотации Query. До сих пор я вижу пример людей, использующих CriteriaQuery, но всегда с примером JOIN, и в моем случае мне нужно наоборот. Мне нужно найти все A's, если их id не в B. Любые хорошие и элегантные решения ?.Spring Data JPA SubQuery

+0

Вы можете использовать классический резервный способ в обычном классе DAO. – Ralph

+0

Я искал решение данных Spring, но спасибо – paul

+0

Я только хочу дать вам указатель на: http://stackoverflow.com/questions/11880924/how-to-add-custom-method-to-spring-data -jpa - если вы это знаете, то все правильно. – Ralph

ответ

1

Просто введите @Query в свои методы интерфейса и напишите свой JPQL. Примеры здесь: http://docs.oracle.com/javaee/7/tutorial/doc/persistence-querylanguage005.htm#BNBVL

например. SELECT DISTINCT a FROM A a WHERE NOT EXISTS (SELECT b FROM B b WHERE <<put your condition here>>)

+0

Могу ли я использовать этот синтаксис в репозитории данных Spring? , Я попробую. – paul

+0

Yep - в репозитории –

+0

Извините, но я не смог заставить его работать. В моем случае я не могу использовать это, потому что у меня нет никаких условий. Я просто хочу сделать типичную находку, если id не существует в другой таблице. @Query (value = "SELECT * FROM publish_request WHERE publish_date <: publishDate И id NOT IN (SELECT publish_request_id FROM enotification_log)") Это то, что у меня есть до сих пор – paul

0

Вы можете использовать NamedNativeQuery из JPA или пользовательского класс POJO (с конструктором для заполнения всех ваших необходимых полей), но в этом случае вы получите массив объектов, и вы должны fech своих записей из массива объектов.

Смежные вопросы