gpt4 book ai didi

java - 保存/更新具有多对多关系的 Hibernate 实体

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:34:50 25 4
gpt4 key购买 nike

我目前正在尝试解决一个问题,即我在 Java Swing 应用程序中使用 Hibernate 4,同时实体之间存在多个多对多关系。

例如,Project 实体与Person 有关系。 PersonProject 是多对多的关系。一个项目可以属于多个类别,因此也存在多对多关系。

Person *-----* Project *-----* Category

当我有一个 swing 表单时,我可以在其中编辑有关PersonProjectCategory 的所有信息当用户点击“保存”按钮时保存人物,保存/更新人物的可能解决方案是什么?

void savePerson(Person p){
Session sess = factory.openSession();
Transaction tx = null;
try {
tx = sess.beginTransaction();

// steps to be done

tx.commit();
}
catch (RuntimeException e) {
if (tx != null) tx.rollback();
}
finally {
sess.close();
}
}

因为 Person 中还有一个 collection Projects 和一个 collection Project 中的 Categoy 可能已更改,我是否必须进行递归类型的保存(首先保存/更新所有子-集合包含的实体,然后保存/更新 Person 实体)或者我是否只需要保存 Person 实体,Hibernate 将保存/更新机制应用于以 Person 为根的整个实体树?有什么最佳做法吗?

最佳答案

看看CascadeType .您可以使用关系注释中的 CascadeType 直接设置保存/更新操作的行为:

@OneToMany(cascade = CascadeType.ALL)

关于java - 保存/更新具有多对多关系的 Hibernate 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9249374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com