2015-07-05 4 views
1

У меня есть два объекта: Профиль & ProfileClubMapping. ПрофильКоллекция состоит из: Profile_ID, Club_ID и Status. Он используется как таблица соединений. Теперь я хочу выбрать все профили и при наличии профиля ProfileClubMapping с определенным Club_ID. Я успешно написал SQL:SQL to JPQL left join with is null

SELECT p.LASTNAME, pcm.STATUS FROM PROFILE p 
LEFT JOIN PROFILECLUBMAPPING pcm ON pcm.PROFILE_ID = p.ID AND pcm.CLUB_ID = 480 

Но у меня возникли проблемы с преобразованием его в jpql. Я пытался что-то вроде этого:

SELECT p.username,pcm FROM Profile p 
LEFT JOIN ProfileClubMapping pcm ON pcm.profile = p 
WHERE pcm.club.id = 480 OR pcm is null 

Единственное, что отсутствует являются профили, которые уже не надо никакого ProfileClubMapping вообще. У вас есть идея?

+1

Левое соединение с условием внутреннего соединения, вам нужно переместить предложение where в положение on. –

+0

вы совершенно правы! решил мою проблему! – perotom

ответ

0

Если мы предположим, что ваш Profile объект содержит коллекцию ProfileClubMapping сущностей называется mappings, то JPQL, чтобы сделать это было бы:

SELECT p.username, pcm.status 
FROM Profile p LEFT JOIN p.mappings pcm 
WHERE pcm.club.id = 480 

Если нет, то, возможно, вы могли бы разместить код ваших классов сущностей в помогите нам создать лучший ответ.

0

Влево присоединиться, где условие является внутренним соединением, вам нужно переместить предложение where в положение on.