2016-05-17 9 views
0

私は 'タイム'テーブルに複数のタイムスタンプを挿入しようとしています。各タイムスタンプには、「競合者」テーブル内のエントリのIDが含まれています。データベースに新しいタイムスタンプを作成するたびに、新しい競合者エントリも取得します。Hibernateはエントリーをマージしません

私はいつも新しいエントリーを得る理由を教えてください。どうすればそれを防ぐことができますか?

競合他社

@Entity 
@Table(name="competitor") 
public class Competitor extends BaseEntity{ 

    private String firstName; 
    private String lastName; 
    private String birthday; 

    @Column(name="firstName") 
    public String getFirstName() { 
     return firstName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    @Column(name="lastName") 
    public String getLastName() { 
     return lastName; 
    } 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

    @Column(name="birthday") 
    public String getBirthday() { 
     return birthday; 
    } 
    public void setBirthday(String birthday) { 
     this.birthday = birthday; 
    } 
} 

時間

@Entity 
@Table(name="time") 
public class Time extends BaseEntity{ 

    private String route; 
    private Competitor competitor; 
    private String time; 

    @Column(name="route") 
    public String getRoute() { 
     return route; 
    } 
    public void setRoute(String route) { 
     this.route = route; 
    } 

    @ManyToOne(cascade = CascadeType.ALL) 
    public Competitor getCompetitor() { 
     return competitor; 
    } 
    public void setCompetitor(Competitor competitor) { 
     this.competitor = competitor; 
    } 

    @Column(name="time") 
    public String getTime() { 
     return time; 
    } 
    public void setTime(String time) { 
     this.time = time; 
    } 

} 
+1

あなたは、既存の 'Competitor'を関連付けたい場合は' Time'エンティティでは、最初に 'Competitor'を最初に検索し、この取り出したオブジェクトを' Time'オブジェクトで設定する必要があります。 – Priyesh

答えて

1

次の例のように、@OneToOne注釈が必要です

@OneToOne 
@JoinColumn(name = "competitor_id") 
private Competitor competitor; 
+0

あなたの助けのためのThangs;)今それは動作します –

関連する問題