gpt4 book ai didi

Java,单个数据库列多次引用

转载 作者:太空宇宙 更新时间:2023-11-04 14:51:05 24 4
gpt4 key购买 nike

我在一个表中有这种关系,如下所示:

    @ManyToOne
@JoinColumn(name="TEAM_HOME", nullable=false)
private Team team;

@Column(name="TEAM_AWAY", insertable=false, updatable=false)
private int teamAway;

这种关系在其他方面:

    @XmlTransient
@OneToMany(mappedBy="team",fetch=FetchType.EAGER)
private Set<Result> result;

我想在结果表中多次引用团队表中的一列,但我不知道如何操作。我尝试过不同的方法但没有成功。

最佳答案

您将需要从团队到结果的两个关系:

@OneToMany(mappedBy="teamHome",...)
private Set<Result> resultsHome;

@OneToMany(mappedBy="teamAway",...)
private Set<Result> resultsAway;

但是没有什么可以阻止你添加类似的方法

public Set<Result> getResults() {
Set<Result> results = new HashSet<>();
results.addAll(resultsHome);
results.addAll(resultsAway);
return results;
}

public void addResult(Result result) {
if (result.teamHome == this) {
resultsHome.add(result);
} else {
resultsAway.add(result);
}
}

我想这不是你所希望的。但是将所有结果放在同一个集合中是不正确的,因为它是不同的。毕竟,您可能想要该集合中“客场”比赛的相反结果。

您真的应该问自己是否真的希望在 Team 类中加入这 2 个关系。 DAO.getMatchesForTeam(...) 不会起到同样的作用吗?当您确实想要制作体育赛事模型时,您最终可能会在 Team 中拥有大量关系,这会使您的代码变得困惑。 @XMLTransient 注释已经表明结果对于团队来说并不那么重要,因为它们可以传输到客户端。

哦,顺便说一句:球队和结果之间有一些东西:比赛。结果应该只保留结果。这样您就可以创建一个 Result.inverse() 方法,该方法将从其他团队的角度提供结果。但没有什么比 Match.inverse() 更好的了,因为主队永远是主队。

关于Java,单个数据库列多次引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23765775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com