java Hibernate:两个OneToMany属性,由具有不同列的同一实体映射
我知道用HQL查询可以很容易地解决这个问题,但是我更喜欢让Hibernate为我处理一些OneToMany属性
让我演示一下我希望我的域模型在伪代码中是什么样子:
Game
Long GameID
Team HomeTeam
Team AwayTeam
@OneToMany(mappedBy="team")
Set<TeamPlay> HomeTeamPlays
@OneToMany(mappedBy="team")
Set<TeamPlay> AwayTeamPlays
表结构类似,有两个外键都指向游戏表上的团队表。显然,如果只有一个外键,那么它将代表一个真正的一对多关系,但实际上我想要的是同一实体子类型的两个双向一对多属性
我不相信使用@Where注释会起作用,因为它需要一个常量,这里不允许使用@JoinColumn。如果这是不可能的,那没关系,我只是想从其他人那里得到它
# 1 楼答案
我打赌你不太懂mappedBy的用法
你可以参考我在https://stackoverflow.com/a/13812047/395202中的另一个答复
简言之,mappedBy是双向关系中“相对侧”的属性名称
对于您的情况,它可能看起来像:
# 2 楼答案
你的代码没有问题。我在团队游戏课上用@ManyToOne测试过,效果很好。按预期在TeamPlay表上创建联接列。没什么不寻常的