@ManyToOne UniDirectional删除

时间:2012-07-04 19:53:14

标签: jpa eclipselink many-to-one

我和@ManyToOne在人与车之间建立了单向关系,这意味着汽车可以由几个人拥有。问题是当我删除汽车时,汽车ID不会从Person的实体连接列中删除。有没有办法在删除汽车后配置JPA从所有者人员加入列中删除汽车ID?

注意: 使用orpahRemoval = 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;  
    }

1 个答案:

答案 0 :(得分:1)

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

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