2017-04-26 6 views
0

Hibernate for OneToManyマッピングに挿入を行っている間。同じデータが2回挿入されています。Hibernate内のOneToManyマッピング用の重複データ

従業員:

@Entity 
public class Employee { 
    @Id 
    @GeneratedValue 
    private int empId; 
    private String name; 
    private String designation; 

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "employee", fetch = FetchType.EAGER, orphanRemoval = true) 
    private Set<Address> addresses = new HashSet<>(); 
} 

住所:

@Entity 
public class Address { 
    @Id 
    @GeneratedValue 
    private int addressID; 
    private String city; 
    private String country; 

    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
    @JoinColumn(name = "empId") 
    @JsonIgnore 
    private Employee employee; 
} 

私は、データを保存するためのPOSTリクエストを使用します。第一、従業員のための 保存要求:第二のため

{ 
    "name": "Test1", 
    "designation": "SAL1", 
    "addresses": [ 
    { 
     "city": "Delhi", 
     "country": "India" 
    }, 
    { 
     "city": "Noida", 
     "country": "India" 
    } 
    ] 
} 

保存要求を従業員:

この場合、アドレステーブルには、Noida:IndiaとDelhi:Indiaのそれぞれに4つのエントリが2つ含まれています。

Noida:Indiaでは1、Delhi:Indiaでは1となっています。

+0

リクエストが2回送信されているかどうかを確認してください。 –

+0

いいえ、私は2人の異なる従業員のために2回送っていますが、アドレステーブルにそのアドレスをすでに持っていて、アドレステーブルに新しい行を作成するのではなく、そのアドレスにマップする必要があります。 –

+0

次に、国と都市を含む複合キーを作成する必要があります。複合キーを調べる –

答えて

0

ロケーションエントリを格納する別のテーブルを作成します。このテーブルのキーを "国"と "都市"の複合キーにします。次に、 "user"の外部キー列と国と都市を含むテーブルを持つ別のアドレステーブルを作成します。

関連する問題