繁体   English   中英

如何在没有任何级联的情况下定义单向OneToMany JPA关系?

[英]How to define a unidirectional OneToMany JPA relationship without any cascade?

当我试图拯救人时,它既不会保存任何人也不会保存任何东西。 我不想保存或更新City对象。 我只想更新/删除joinColumn。 有没有办法做到这一点?

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;

}

首先在City端定义@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);

同样适用于删除..您必须删除双方的实体引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM