Java类之间的Hibernate ORM映射

时间:2015-09-07 09:02:55

标签: hibernate hibernate-mapping

我有两个Java类匹配(板球比赛)和球。在比赛中,会有很多球,每个球都将成为比赛的一部分。我需要以某种方式在这两个类之间进行hibernate映射,

  1. 如果我在匹配对象上调用save,它应该能够将所有包含球的球保存在球桌中,并在匹配表中保留剩余的匹配细节。

  2. 如果我在球对象上调用保存或更新,首先它应该匹配表以检查球对象中是否存在匹配id是否可用。如果它在那里,它应该保存或更新球桌中的球对象。

  3. 如果任何人不知道板球中的比赛球关系,他可以认为是足球比赛 - 目标关系。在一场比赛中,可以有n个目标,每个目标都将成为比赛的一部分。保存匹配还应该能够在目标表中保存所有包含的目标,并且保存目标对象应该在匹配表中检查其ID,然后将目标详细信息保存在目标表中。

    感谢。

2 个答案:

答案 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 } }