我有两个Java类匹配(板球比赛)和球。在比赛中,会有很多球,每个球都将成为比赛的一部分。我需要以某种方式在这两个类之间进行hibernate映射,
如果我在匹配对象上调用save,它应该能够将所有包含球的球保存在球桌中,并在匹配表中保留剩余的匹配细节。
如果我在球对象上调用保存或更新,首先它应该匹配表以检查球对象中是否存在匹配id是否可用。如果它在那里,它应该保存或更新球桌中的球对象。
如果任何人不知道板球中的比赛球关系,他可以认为是足球比赛 - 目标关系。在一场比赛中,可以有n个目标,每个目标都将成为比赛的一部分。保存匹配还应该能够在目标表中保存所有包含的目标,并且保存目标对象应该在匹配表中检查其ID,然后将目标详细信息保存在目标表中。
感谢。
答案 0 :(得分: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;
}
答案 1 :(得分:1)
@ManyToOne
@JoinColumn(name = "MATCH_ID", nullable = false)
private Match match;
@IBAction func filterTable(sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
//User selected today! Filter the table for it
}
else if sender.selectedSegmentIndex == 1 {
//User selected past! Filter the table for it
}
else {
//User selected upcomming! Filter the table for it
}
}