2017-03-27 70 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