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

を見て、あなたのデータベースが – 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

大きいが、これはのように双方向のマッピングではなく、一方向である場合、私は事、あなたは再びEagerFetchについて考えたいですオペアンプ – gybandi

関連する問題