2012-01-06 211 views
1

在Hibernate中,我有兩個實體類。休眠更新OneToMany

A類和B類

類A包含B類的列表

@Entity 
    class A{ 
     @Id @GeneratedValue(strategy=GenerationType.AUTO) 
     private Long id; 
     @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER) 
     List<B> list; // ArrayList 
    } 

    @Entity 
    class B{ 
     @Id @GeneratedValue(strategy=GenerationType.AUTO) 
     private Long id; 
    } 

三個表將這樣被創建,表A,A_B和B.如果A包含什麼實體A有,而A_B是關係表,B是什麼B是。我通過創建一個新會話,beginTransaction,saveOrUpdate,提交併關閉會話來保存/更新它們。

現在,問題是,每當我添加一個新的項目列出並更新A,休眠刪除整個A_B表,然後插入一切與新項目。其實,我只是希望它的1個新行A_B和1個新行添加到B.


<property name="hbm2ddl.auto">update</property> 
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

其餘部分是相當多的標準

+0

在此處發佈您的hibernate配置文件(hibernate.cfg.xml)。 – 2012-01-06 10:27:54

+0

我應該注意到對象A不是持久性的,因爲我關閉了會話並且沒有二級緩存。 – HeavenAgain 2012-01-06 10:38:02

回答

0

請檢查您的Hibernate配置文件,因爲你可以提供配置以刪除以前的表,並在每次重新啓動服務器時創建新表。

+0

我已經做了我的更新,但我不認爲這是問題。 – HeavenAgain 2012-01-06 10:36:13