Jpa @多通单向删除

Jpa @多通单向删除,jpa,eclipselink,many-to-one,Jpa,Eclipselink,Many To One,我有一个@manytone单向关系的人和车,这意味着一辆车可以拥有几个人。问题是当我删除一辆汽车时,汽车id不会从Person的entity join列中删除。是否有一种方法可以配置JPA在删除一辆车后从车主加入列中删除车id 注意: 使用orpahremovation=true没有帮助,因为我需要将父对象的car引用更新为null,并且每个实体(car/Person)都不依赖于其他实体的存在 @Entity public class Car{ @Id

我有一个@manytone单向关系的人和车,这意味着一辆车可以拥有几个人。问题是当我删除一辆汽车时,汽车id不会从Person的entity join列中删除。是否有一种方法可以配置JPA在删除一辆车后从车主加入列中删除车id

注意: 使用orpahremovation=true没有帮助,因为我需要将父对象的car引用更新为null,并且每个实体(car/Person)都不依赖于其他实体的存在

 @Entity
    public class Car{
        @Id
        @GeneratedValue
        private long id;
    }

    @Entity
    public class Person {
        @Id
        @GeneratedValue
        private long id;

        @ManyToOne
        @JoinColumn(name="CAR_ID")
        private Car car;  
    }

不可以。您需要执行查询以查找拥有给定汽车的所有人员,将他们的汽车设置为null,然后删除汽车:

List<Person> persons = em.createQuery("select p from Person p where p.car = :car", Person.class)
                         .setParameter("car", car)
                         .getResultList();
for (Person person : persons) {
    person.setCar(null);
}
em.remove(car);
List persons=em.createQuery(“从personp中选择p,其中p.car=:car”,Person.class)
.setParameter(“汽车”,汽车)
.getResultList();
用于(人:人){
person.setCar(空);
}
移除(汽车);

否。您需要执行一个查询以查找拥有给定汽车的所有人员,将他们的汽车设置为空,然后删除汽车:

List<Person> persons = em.createQuery("select p from Person p where p.car = :car", Person.class)
                         .setParameter("car", car)
                         .getResultList();
for (Person person : persons) {
    person.setCar(null);
}
em.remove(car);
List persons=em.createQuery(“从personp中选择p,其中p.car=:car”,Person.class)
.setParameter(“汽车”,汽车)
.getResultList();
用于(人:人){
person.setCar(空);
}
移除(汽车);