Hibernate 更新 OneToMany
在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请检查您的休眠配置文件,因为您可以提供配置以在每次服务器重新启动时删除以前的表并创建新表。
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.