2017-03-27 71 views
1

当我试图救人时,它既不保存任何人也不保存任何城市。我不想保存或更新City对象。我只想更新/删除joinColumn。有没有办法做到这一点?如何定义没有级联的单向OneToMany 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; 

} 
+0

看到这个答案http://stackoverflow.com/questions/10551485/hibernate-cascade-type – Cherif

+0

和我想再次考虑EagerFetch如果你的数据库很大 – Cherif

回答

0

首先定义在市一侧的@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); 

删除也一样..你必须删除两边的实体引用。

+1

但这是一个双向映射,而不是单向的欧普问道 – gybandi