休眠:来自同一表的两个外键

时间:2019-07-10 11:12:56

标签: java hibernate

我有一个名为 Stat 的表,另一个名为 Request 的表,在请求表中我要归因于: Old_Stat New_Stat ,它们都引用到同一表Stat中。 但是,当使用Hibernate在两个表之间建立关系时,我不知道如何对Hibernate说这两个属性是同一表Stat上的外键。 希望有人可以帮助我修复此问题。

这是我的代码主张:

@Entity
public class Request implements Serializable{
@Id @GeneratedValue
private Integer Request_id;
     ..... 

@ManyToOne
@JoinColumn(name = "stat_id")
private Stat stat_new;

@ManyToOne
@JoinColumn(name = "stat_id")
private Stat stat_old;
}
    /** in The Stat Class **/

@Entity
public class Stat implements Serializable{
@Id @GeneratedValue
private Integer stat_id;
   ..... 

@OneToMany(mappedBy = "stat_old",fetch = FetchType.LAZY)
private Collection<Request> requests;

@OneToMany(mappedBy = "stat_new",fetch = FetchType.LAZY)
private Collection<Request> requestss;

}

1 个答案:

答案 0 :(得分:1)

那是因为您尝试加入stat_id实体中的Request列,并且该列不存在。即使这样做,如果没有updateable=falseinsertable=false,您也无法两次加入该列。

这很有可能会解决您的问题。

@ManyToOne
@JoinColumn(name = "stat_new", referencedColumnName= "stat_id")
private Stat stat_new;

@ManyToOne
@JoinColumn(name = "stat_old", referencedColumnName= "stat_id")
private Stat stat_old;