Hibernate 更新 OneToMany

发布于 2024-12-25 05:51:38 字数 878 浏览 0 评论 0原文

在 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、提交和关闭会话来保存/更新它们。

现在的问题是,每当我向列表添加新项目并更新 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>

其余的都差不多标准了

In Hibernate, I have two entity classes.

class A and class B.

class A contains a list of class 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;
    }

Three tables will be created like this, table A, A_B, and B. Where A contains whatever entity A has, and A_B is the relation table, and B is whatever B is. I am saving/updating them by creating a new session, beginTransaction, saveOrUpdate, commit, and close the session.

Now, the problem is, whenever I add a new item to list and updates A, hibernate deletes the entire A_B table, and then inserts everything back with the new item. I actually just want it to add 1 new row to A_B and 1 new row to B.


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

The rest is pretty much standard

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天气好吗我好吗 2025-01-01 05:51:38

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

Please check your hibernate configuration file, because you can provide configuration to delete previous table and create new table each time when server gets restarted.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文