我收到以下异常:
无法创建sessionFactory object.org.hibernate.AnnotationException: referencedColumnNames(wojid_fk,powid_fk,id,rodzgm_fk)of com.darek.Persistance.teryt.Miejscowosc.gmina referencing com.darek.Persistance.teryt.Gmina未映射到单个属性
这是我的Miejscowosc课程:
//imports
(...)
@Entity
@Table(name = "miejscowosc")
public class Miejscowosc {
public Miejscowosc(int id, String nazwa, boolean nazwazwyczajowa,
RodzajMiejscowosci rodzmiejsc, Gmina gmina, int idpod, Date stanna) {
super();
this.id = id;
this.nazwa = nazwa;
this.nazwazwyczajowa = nazwazwyczajowa;
this.stanna = stanna;
this.rodzmiejsc = rodzmiejsc;
this.gmina = gmina;
this.idpod = idpod;
}
protected Miejscowosc() {
super();
}
@Id
@Column(columnDefinition = "MEDIUMINT(7)")
private int id;
@Column(columnDefinition = "MEDIUMINT(7)")
private int idpod;
@Column(columnDefinition = "CHAR(36)")
private String nazwa;
@Column(name = "nazwazwyczajowa", columnDefinition = "BIT", length = 1)
private boolean nazwazwyczajowa;
@Column(columnDefinition = "DATE")
private Date stanna;
@JoinColumn(name = "rodzmiejsc_fk", referencedColumnName = "id")
@ManyToOne
private RodzajMiejscowosci rodzmiejsc;
@JoinColumns({
@JoinColumn(name = "wojid_fk", referencedColumnName = "wojid_fk"),
@JoinColumn(name = "powid_fk", referencedColumnName = "powid_fk"),
@JoinColumn(name = "gmid_fk", referencedColumnName = "id"),
@JoinColumn(name = "rodzgm_fk", referencedColumnName = "rodzgm_fk") })
@ManyToOne
private Gmina gmina;
//getters and setters
(...)
}
那是我的Gmina课程:
//imports
(...)
@SuppressWarnings("unused")
@Entity
@Table(name = "gmina")
public class Gmina {
public Gmina(int id, String nazwa, String nazwadod, Date stanna) {
super();
this.id = id;
this.nazwadod = nazwadod;
this.nazwa = nazwa;
this.stanna = stanna;
}
protected Gmina() {
super();
}
@Id
@Column(columnDefinition = "SMALLINT")
private int id;
@Column(columnDefinition = "CHAR(50)")
private String nazwadod;
@Column(columnDefinition = "CHAR(36)")
private String nazwa;
@Column(columnDefinition = "DATE")
private Date stanna;
@JoinColumns({
@JoinColumn(name = "powid_fk", referencedColumnName = "id", insertable = false, updatable = false),
@JoinColumn(name = "wojid_fk", referencedColumnName = "wojid_fk", insertable = false, updatable = false) })
@ManyToOne
private Powiat powiat;
@ManyToOne
@JoinColumn(name = "rodzgm_fk", referencedColumnName = "id", insertable = false, updatable = false)
private RodzajGminy rodzGm;
//getters and setters
(...)
}
如何解决此问题以及为什么存在问题? 提前感谢您的帮助。
编辑:
gmina table和miejscowosc表都有 wojid_fk , powid_fk 和 rodzgm_fk 列,这就是为什么我有相同名称的原因。唯一的区别是gmina有 id ,而miejscowosc有 gmid_fk ( id 的外键)
答案 0 :(得分:-1)
您需要使用@JoinColumns
,如下所示
@JoinColumns({
@JoinColumn(name = "first", referencedColumnName = "column_name"),
@JoinColumn(name = "second", referencedColumnName = "column_name"),
@JoinColumn(name = "third", referencedColumnName = "column_name")
})