如何保持/删除JPA实体但未提交?

时间:2012-01-13 09:07:06

标签: java hibernate jpa

我有一个主孩子表。用户可以在选择主项目/实体后添加/删除子项。当主项目列表选择索引发生变化时,我将子表格/ arraylist与DB中所选主项目的子项目一起填充。当用户单击相应的子添加/删除按钮时,我打开了实体管理器,启动了事务,保留或删除了子实体/项。我的问题是在用户选择另一个主项目时保持跟踪新的和删除的子实体。因为我在用新选择的主项目的子实体填充它之前清除子表/ Arraylist(但不清除持久性上下文)。当用户再次选择上一个主项时,我想反映新的/已删除的,未提交的子项。希望正确解释了我的问题。在JPA上使用hibernate。感谢。

2 个答案:

答案 0 :(得分:0)

好吧,只需执行查询即可获取所选主服务器的所有子项。即使事务尚未提交,事务也会在数据库中看到它们,因为它已保存它们。

但请注意,使用长事务是不可扩展的,并且会导致各种锁定和陈旧问题。为什么不保存孩子并在每次用户添加或删除孩子时提交?

答案 1 :(得分:0)

我宁愿不在用户点击之间保持交易。他可以去咖啡休息并离开。我宁愿使用temporarty表,会话,缓存,隐藏输入(如果它是web前端)等。