繁体   English   中英

Hibernate:两个OneToMany属性,由具有不同列的同一实体映射

[英]Hibernate: Two OneToMany properties, mapped by the same entity with different columns

我知道这可以通过HQL查询轻松解决,但我更喜欢让Hibernate为我处理一些OneToMany属性。

让我演示一下我希望我的域模型在伪代码中的样子:

Game
  Long GameID
  Team HomeTeam
  Team AwayTeam
  @OneToMany(mappedBy="team")
  Set<TeamPlay> HomeTeamPlays
  @OneToMany(mappedBy="team")
  Set<TeamPlay> AwayTeamPlays

表结构类似,有两个外键都指向Game表上的Team表。 显然,如果只有一个外键,那么它将代表真正的一对多关系,但实际上我想要的是同一实体子类型的两个双向一对多特性。

我不相信使用@Where注释会起作用,因为它需要一个常量,而@JoinColumn不允许在这里。 如果不可能,那就没关系,我只是想从其他人那里来。

我打赌你并不真正理解mappedBy的使用。

您可以参考https://stackoverflow.com/a/13812047/395202中的其他答案

简而言之,mappedBy是双向关系“对立面”中的属性名称。

对于你的情况,它可能看起来像:

class TeamPlay {
    @ManyToOne
    Team homeTeam;

    @ManyToOne
    Team awayTeam;
}

class Team {
    @OneToMany(mappedBy="homeTeam")
    Set<TeamPlay> homeTeamPlays;

    @OneToMany(mappedBy="awayTeam")
    Set<TeamPlay> awayTeamPlays;
}

您的代码没有任何问题。 我在TeamPlay类上使用@ManyToOne进行了测试,它运行正常。 按预期在TeamPlay表上创建连接列。 没什么不寻常的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM