2014-03-14 2 views
0

Я просто написали SQL запроса:удаления записей с JPA и подзапросы

DELETE FROM basisgegevens.gm_persoonburgstaat pbs 
WHERE (pbs.ingangsdatum, pbs.id_persoon) in (
    SELECT pbs2.ingangsdatum, pbs2.id_persoon 
    FROM basisgegevens.gm_persoonburgstaat pbs2 
    WHERE pbs2.ingangsdatum = pbs.ingangsdatum 
    AND pbs2.id_persoon = :persoonID 
    AND pbs2.id_persoonburgerlijkestaat > pbs.id_persoonburgerlijkestaat); 

Мне нужно переписать его JPQL, но я застревание с подзапросом refrencing внешнего запроса.

public class PersoonBurgerlijkeStaatEntity { 
@Column(name = "id_persoonburgerlijkestaat" 
private Long identifier; 
private Date ingangsdatum; 
@ManyToOne 
@JoinColumn(name = "id_persoon", referencedColumnName = "id_persoon", nullable = false) 
private PersoonEntity persoon; 

}

persoon объект имеет идентификатор

Может кто-то поможет мне переписать?

Thanks

+0

Я предполагаю, что basegegevens - это схема и basegegevens таблица?. И persoonburgstaat - таблица для лица PersoonBurgerlijkeStaatEntity? – Koitoer

ответ

0

Не уверен, но попробуйте.

DELETE FROM persoonburgstaat person where (person.ingangsdatum, person identifier) in 
    (select p.ingangsdatum, p.identifier from persoonburgstaat p 
     left join p.persoon per where per.id_persoon = :persoonID 
     AND per.id_persoonburgerlijkestaa > p.identifier) 

левый присоединиться сделает внешний запрос

Но более верный пост PersoonEntity сущности, как я думаю, что «id_persoonburgerlijkestaa» это имя столбца не свойство и запрос не будет основано на этом.

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