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

Java,单个数据库列多次引用,java,database,jpa,relationship,Java,Database,Jpa,Relationship,我在一个表中有这样的关系: @ManyToOne @JoinColumn(name="TEAM_HOME", nullable=false) private Team team; @Column(name="TEAM_AWAY", insertable=false, updatable=false) private int teamAway; 这种关系在其他方面: @XmlTransient @OneToMany(mappedBy="t

我在一个表中有这样的关系:

    @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);
    }
}
我猜这不是你所希望的。但是将所有结果放在同一个集合中是不正确的,因为这是不同的。毕竟,您可能希望该集合中客场比赛的结果是相反的

你应该扪心自问,你是否真的想在你的团队课程中使用这两种关系。不会是一把刀吧。获得匹配的团队。。。同样的目的?当你真的想做一个体育赛事的模型时,你可能会在团队中有很多关系,这会把你的代码弄得乱七八糟。@XMLTransient注释已经指出,对于团队来说,将结果传输到客户端并不重要


哦,顺便说一句:球队和结果之间有某种关系:比赛。结果应该只保留结果。这样你就可以得到一个结果。相反的方法,从另一个团队的角度给你结果。但是没有什么比比赛更好。相反,因为主队永远是主队。

我不完全理解你想做什么。你能说得更准确些吗?你想要一个@manytomy关系吗?或者你想把teamAway变成一个面向团队的ManyToOne?这也会有助于看到更多的类,如名称等。我有两个表-团队和结果。团队表包含有关teamsteam名称的信息。。。。。和结果表包含有关结果的信息。各队互相竞争。我想做的是将有关团队比赛结果的信息放在结果表中。结果表必须包含以下列:TeamHome、TeamAway、ScoreHome、ScoreAway,其中TeamHome和TeamAway都引用表团队。