2015-09-07 74 views
0

我有兩個Java類匹配(一個板球比賽)和球。在比賽中,會有很多球,每一個球都會成爲比賽的一部分。我需要冬眠這兩個類之間的映射的方式,Java類之間的Hibernate ORM映射

  1. 如果我叫保存比賽對象,它應該能夠堅持球桌和剩餘比賽的細節均含有球,匹配表。

  2. 如果我對球對象調用保存或更新,首先應該去匹配表來檢查球對象中存在的匹配ID是否可用。如果它在那裏,它應該保存或更新球檯中的球對象。

如果任何一個人不知道Cricket中的Match-Ball關係,他可以認爲是Foot Ball Match-Goal關係。在比賽中可以有n個目標,每個目標都將成爲比賽的一部分。 Saving Match也應該能夠將所有包含的目標保存在目標表中,並且保存目標對象應該使用其ID來檢查匹配表,然後將目標詳細信息保存到目標表中。

謝謝。

回答

1

我認爲這是@ManyToOne和@OneToMany註釋會爲你工作。如果您將保存將(必須)包含目標列表的對象匹配,則每個目標都將通過匹配進行保存。

Match.java

import javax.persistence.*; 
import java.util.List; 

@Entity 
@Table(name = "match") 
public class Match { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    protected Integer id; 

    @JsonBackReference 
    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
    @JoinTable(name = "goal", joinColumns = { 
     @JoinColumn(name = "match_id", nullable = false, updatable = false) }, 
     inverseJoinColumns = { @JoinColumn(name = "goal_id", 
       nullable = false, updatable = false) }) 
    protected List<Goal> goals; 
} 

Goal.java

import javax.persistence.*; 
import java.util.List; 

@Entity 
@Table(name = "goal") 
public class Goal { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    protected Integer id; 

    @JsonBackReference 
    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
    @JoinTable(name = "match", joinColumns = { 
     @JoinColumn(name = "goal_id", nullable = false, updatable = false) }, 
     inverseJoinColumns = { @JoinColumn(name = "match_id", 
       nullable = false, updatable = false) }) 
    protected Match matche; 

} 
+0

謝謝!一個目標不能成爲許多比賽的一部分。它只是一個Match的一部分。目標是多對一。即使我要拯救Goal,我也不想保存比賽,我只想檢查比賽是否存在。如果它不存在,那麼它也將保存匹配。請根據此評論更新您的答案。 –

+0

感謝您的更新。但是在Match類中,它應該是OneToMany。請相應更新。 –

+0

這適合你嗎? – Pras

1
  • 匹配類:

@OneToMany(mappedBy = "match", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) private Set<Ball> balls;

  • Ball類:

@ManyToOne @JoinColumn(name = "MATCH_ID", nullable = false) private Match match;

+0

謝謝Pras!這很有用。 –