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

我需要能够在更大的Hibernate事务期间将单个实体刷新到DB.

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

我们有一个数量行项目,需要保存到数据库中,因为我们在同一个表格中选择总和(数量),并且结果数量必须与特定条件匹配,因此整个交易有效.

如果未保存数量,则总和(数量)将返回错误的值,但如果保存,则总和是正确的,并且可以完成剩余的事务处理.

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

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

更多信息:

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

所以我狩猎它,似乎在Hibernate内部调用“saveOrUpdate”时,系统会查看如何生成实体的@Id.

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

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

摘要

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

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

点赞