如何在hibernate会话中刷新单个实体

时间:2011-10-28 01:18:12

标签: hibernate

我需要能够在更大的Hibernate事务中将单个实体刷新到数据库。

我不想提交事务,因为附加到事务的某些实体是不一致的,并且还不能刷新到DB,但是我需要刷新一个实体,因为稍后在事务中这个实体是包含在聚合查询中以验证事务。

我们有一个数量行项目需要保存到数据库中,因为我们在同一个表格中选择总和(数量),因此产生的数量必须与整个交易的某个标准相匹配是有效的。

如果未保存数量,则总和(数量)将返回错误的值,但如果已保存,则总和是正确的,其余的交易处理可以完成。

我也不能“只是添加”行项目中的数量到总和结果,因为实际上有很多行项目都在不同的地方,并且调用总和的地方与不同的模块位于不同的模块中。项目已添加。

如果我只能将单个行项目刷新(SQL插入)到当前事务中的数据库,系统将正常工作。

更多信息:

我发现我在SQL Server上没有遇到这个问题,但在Oracle上却没有。这很奇怪..

所以我深入研究它,看来在你调用“saveOrUpdate”时Hibernate内部,系统会看到如何生成实体的@Id。

在SQL Server中我们有一个Identity列,实体获取其ID的唯一方法是插入(因此我想要的),而在ORACLE中它不支持Identities,因此使用Sequence来生成每列的ID。

由于ORACLE不需要插入记录来生成ID,这意味着实体未插入,而它是在SQL Server上。

摘要

所以似乎Hibernate确实支持选择性插入,但到目前为止它只在IT需要时插入,现在我需要找到是否有办法强制它。

1 个答案:

答案 0 :(得分:2)

我认为你不能做到这一点,据我所知,这是“全有或全无”。相反,您是否可以获得保存在数据库中的当前总和(数量),然后添加要保存到其中的额外数量,然后执行验证?