Hibernate更新OneToMany

时间:2012-01-06 09:54:33

标签: mysql hibernate one-to-many

在Hibernate中,我有两个实体类。

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,commit和关闭会话来保存/更新它们。

现在,问题是,每当我添加一个新项目列表并更新A时,hibernate会删除整个A_B表,然后将所有内容插回新项目。我实际上只是希望它向A_B添加1个新行,向B添加1个新行。

<小时/>

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

其余的几乎是标准的

1 个答案:

答案 0 :(得分:0)

请检查您的hibernate配置文件,因为您可以提供配置以删除上一个表并在每次重新启动服务器时创建新表。