我和@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;
}
答案 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);