Jpa @多通单向删除
我有一个@manytone单向关系的人和车,这意味着一辆车可以拥有几个人。问题是当我删除一辆汽车时,汽车id不会从Person的entity join列中删除。是否有一种方法可以配置JPA在删除一辆车后从车主加入列中删除车id 注意: 使用orpahremovation=true没有帮助,因为我需要将父对象的car引用更新为null,并且每个实体(car/Person)都不依赖于其他实体的存在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
@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(空);
}
移除(汽车);