0
我有一個小問題,我有一個超類定義一個實體到PostgreSQL中的根表。Hibernate沒有使用@JoinTable的名稱參數
這個類有2個繼承表/類實體,在這裏我想添加一個@OneToOne
連接表的關聯:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Table(name = "equipement")
public abstract class Equipement
{
....
}
@Entity
@Table(name = "nod")
public class Nod extends Equipement
{
protected Cross cross;
@OneToOne(cascade = CascadeType.ALL, optional = true, fetch = FetchType.EAGER)
@JoinTable(name = "assoc_nod_cross", joinColumns = @JoinColumn(name = "nod_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "cross_id", referencedColumnName = "id"))
public Cross getCross()
{
return cross;
}
...
}
@Entity
@Table(name = "cross")
public class Cross extends Equipement
{
protected Nod nod;
@OneToOne(cascade = CascadeType.ALL, optional = true, fetch = FetchType.EAGER)
@JoinTable(name = "assoc_nod_cross", joinColumns = @JoinColumn(name = "cross_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "nod_id", referencedColumnName = "id"))
public Nod getNod()
{
return nod;
}
...
}
當列表中的所有點頭或交叉實體,休眠要搜索在該inverseJoinColumns場錯誤的表,它不使用名稱(assoc_nod_cross),我什至可以放任何東西。
樣品:
Hibernate: select cross0_.id as id1_7_, cross0_.nod_id as nod_id2_1_ from cross cross0_
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
...
Caused by: org.postgresql.util.PSQLException: ERROR: column cross0_.node_id does not exist
是不是因爲@Inheritance戰略的問題?它是休眠的bug嗎?這是我的實體定義中的問題嗎?
增加的信息:我試着切換到EclipseLink來檢查它是否是一個休眠錯誤/限制,或者如果我在某處錯了。 EclipseLink工作良好。
我正在考慮這樣的問題,但即使沒有Cross實體上的JoinTable註釋,也存在相同的錯誤。 – 2014-10-28 15:32:29
即使使用'mappedBy =「cross」'? – 2014-10-28 15:37:26
是的,我改變了它,並保留它,因爲它顯然更好。但它繼續在我身上。 – 2014-10-28 15:42:56