2012-01-06 321 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