deleting entries with JPA and subqueries

六月ゝ 毕业季﹏ 提交于 2019-12-23 05:17:59

问题


I just wrote an sql query :

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);

I need to rewrite it to JPQL, but am getting stuck with the subquery refrencing the outer query.

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;

}

The persoon entity has an identifier

Can someone help me rewrite this?

Thanks


回答1:


Not sure about this but give a try.

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)

the left join will make the outer query

But to be more sure post PersoonEntity entity as I think " id_persoonburgerlijkestaa " is the name of the column not the property and query will fail based on that.



来源:https://stackoverflow.com/questions/22410023/deleting-entries-with-jpa-and-subqueries

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!