2014-01-27 5 views
0

Я хотел бы написать запрос, который извлекает следующие:JPA Query присоединиться, где пункт о присоединиться к таблице

  • Клиенты, не содержащий никаких контактов
  • Клиенты, содержащие контакты, но только контактные лица, имеющие статус " AC»

    ВЫБРАТЬ клиента от клиента клиента LEFT JOIN FETCH client.contacts контакт WHERE (client.contacts ПУСТ ИЛИ (client.contacts НЕ ПУСТЫЕ И contact.status = 'AC'))

Этот запрос возвращает только своим клиентам без контактов и клиентов, который имеет только активные контакты. Может кто-нибудь помочь мне?

Я использую JPA1. Я не могу переключиться на JPA2. Он также должен быть запросом JPA1.

Когда я имею следующие данные в моей БД:

  • Client 1 -> контактов: контакт 1 с статусным переменным током, контактом 2 со статусом AR
  • Client 2 -> контакты: контактными 3 со статусом AR, контакт 4 со статусом AR
  • Client 3 -> контакты: контакт 5 со статусом переменного тока, контакт 6 со статусом AC

Я хотел бы получить

  • Client 1 только с контактом 1
  • Client 2 без каких-либо контактов
  • Client 3 с контактом 5 и 6

ответ

0

"ГДЕ И client.status =" AC" означает, что вы получите только клиентов со статусом AC. Вы имеете в виду "WHERE contact = null OR contact.status = 'AC'"?

+0

Мои контакты могут быть пустыми или содержать контакты с сохраненным статусом, но я хочу только получить неархивированные контакты. – wvp

+0

Я отредактировал мое сообщение, чтобы быть более понятным – wvp

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