【问题标题】:Specifying multiple one-to-many relationships between tables in Hibernate在 Hibernate 中指定表之间的多个一对多关系
【发布时间】:2015-03-29 06:19:20
【问题描述】:

我有两张桌子:Teams 和 Matches

Teams 表的组成如下 [Team ID, Team Name] Matches 表的组成如下 [Match ID, Home Team, Away Team, Result]

主队和客队是来自 Teams 表的外键,因此在 Teams 和 Matches 表之间定义了两个一对多的关系。

我知道如何指定两个表之间的单个关系,但我如何指定两个表之间的多个关系?是同一个过程吗?

如何在 Hibernate 中指定这些关系?

【问题讨论】:

  • 您的意思是指定“主队”和“客队”是多对一的关系?有关多对一映射,请参阅 Hibernate 文档:docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/…
  • 对了,那么指定两个表之间的多个关系和指定单个关系的过程是一样的吗?
  • 当然——您可以设置尽可能多的多对一关系;在这种情况下,Match 中的每个“团队”都是一对多的关系。

标签: java mysql hibernate


【解决方案1】:

您可以在 Teams 和 Matches 之间进行单向映射,如下所示:

在匹配类中:

@ManyToOne(optional = false)
@JoinColumn(name = "home_team_id", referencedColumnName = "team_id")
private Team homeTeam;

@ManyToOne(optional = false)
@JoinColumn(name = "away_team_id", referencedColumnName = "team_id")
private Team awayTeam;

如果您需要双向关系,您可以添加以下内容:

在团队课程中:

@OneToMany(mappedBy = "homeTeam")
private Set<Matches> homeMatches;

@OneToMany(mappedBy = "awayTeam")
private Set<Matches> awayMatches;

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多