2016-08-18 13 views
1
@Entity 
@Table(name="PROPERTY_VALUES") 
public class PropertyValuesData extends AbstractData { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name="VAL_ID") 
    private Long id; 

    @OneToOne(fetch = FetchType.EAGER, cascade= {CascadeType.PERSIST}) 
    @JoinColumn(name = "VAL_PROP_ID") 
    private PropertyData property; 

} 

は、オブジェクトを永続存在する場合は何もしない、オブジェクトを挿入します。私は()idを持つ既存のプロパティが含まれている新しいオブジェクトPropertyValuesDataを作成する) 1 - :存在しない場合はJPAは

私は2の状況を持っています>次に新しいものを追加するだけですPropertyValuesData 2)新しいオブジェクトPropertyValuesDataを作成し、新しいプロパティ - >次に新しいPropertyDataも挿入したいと思います。

CascadeType.PERSISTを追加すると、新しいプロパティを保存できますが、既存のプロパティの場合は再度挿入します。同じプロパティを再度挿入しないようにするにはどうすればよいですか?

+0

を保持どのように表示されたコードの数より多くの行を追加してくださいエンティティをdb/entityManagerに書き込んでいます – Guenther

答えて

0

また、追加CascadeType.MERGE

を追加してみてください、PropertyDataは(そう、現在の永続性コンテキストで、かつ外れない)Managedこと、それが動作するために必要であることを覚えておいてください。 Detachedエンティティを使用する場合は、idにdbの値を設定します。これにより、INSERTUPDATEではありません。 DBからPropertyDataを必要

それが100%に取り組んで取得するには、単にSELECT(あなたがしようとしているにもidによって同じように、それを設定し、PropertyValuesData

+0

私はMERGEも試してみましたが、それは役に立ちません。 – lucas999

+0

@ lucas999注意を確認してください。 – Antoniossss

関連する問題