2012-05-16 88 views
1

我嘗試在一個實體(一對多在一個表中,父母 - 子女關係)來創建關係,我有一個類:Hibernate的一對多在一個實體

public class MenuItem { 
@Id 
@GeneratedValue 
private long Id; 
private String content; 
private String name; 

@ManyToOne(cascade = { CascadeType.ALL }) 
@JoinColumn(name="parent") 
private MenuItem parent; 

@OneToMany(cascade = CascadeType.ALL, mappedBy="parent") 
private Set<MenuItem> childrens = new HashSet<MenuItem>(); 

//getters and setters 

} 

加載數據的工作很好,但是當我嘗試保存菜單項,我有以下錯誤:

「場‘childrens_id’沒有默認值」

Hibernate試圖保存菜單項correst值(我看到它在日誌),但是,我認爲,其試創建另一個,Join表和finnaly事務失敗。

這是exacly顯示在: http://www.roseindia.net/hibernate/hibernate4/OnetoManySelfJoin.shtml 但無法正常工作。我使用了Hibernate 4.1.1和Tomcat服務器7.

已解決:刪除並再次創建數據庫。

回答

1

推測最好的辦法是放棄數據庫並重新運行。看起來你已經有了hibernate/jpa impl的設置來生成你的數據庫方案,但是代碼和表格有太多的不同步。你的桌子上可能有一個「搖晃」的字段。

作爲一個附註:「狂野」猜測:在您將其更改爲上面的代碼之前,您有@JoinColumn(name="childrens_id")的嘗試嗎? (與mappedBy值混淆?)

+0

我丟棄並重新創建數據庫,它正在工作。非常感謝! 在此之前,我嘗試了一些其他的東西,值(JoinColumn也:))等,因此可能是這個錯誤。 Registers Adam Adam –

+0

這是一個常見的錯誤,這裏很好地解釋http://ondra.zizka.cz/stranky/programovani/java/hibernate-common-errors-and-exceptions.texy。 – Yanflea

相關問題