如何在没有任何级联的情况下定义单向一对多 JPA 关系



当我试图拯救人时,它既不救人也不救城市。我不想保存或更新城市对象。我只想更新/删除加入列。有什么办法可以做到这一点吗?

Person person = new Person();
person.setCities(...);
personDAO.save(person);

public class Person{
    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumn(name = "city_id")
    private List<City> cities;
}

public class City{
    @Id
    @Column(name = "city_id")
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "org.hibernate.id.UUIDGenerator")
    private String cityId;
}

首先定义城市端的@ManyToOne映射:

@ManyToOne
@JoinColumn(name = "person_id")
private Person person;

然后添加mappedBy属性并删除@JoinColumn:

@OneToMany(fetch = FetchType.EAGER, mappedBy = "person")
private List<City> cities;

当您保存/更新时,您必须在依赖项的两端设置实体:

Person person = new Person();
person.setCities(...);
for(City city: cities){
   city.setPerson(person);
}  
personDAO.save(person);
删除

也是如此......您必须删除两侧的实体引用。

最新更新