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

如何在hibernate会话中刷新单个实体,hibernate,Hibernate,我需要能够在更大的Hibernate事务期间将单个实体刷新到DB 我不想提交该事务,因为附加到该事务的某些实体不一致,无法刷新到DB,但我需要刷新一个实体,因为在该事务的后面,该实体包含在聚合查询中以验证该事务 我们有一个需要保存到DB的数量行项目,因为稍后(在同一事务中)我们从同一个表中选择了一个总和(数量),并且结果数量必须符合整个事务有效的特定标准 如果未保存数量,则总和(数量)返回错误的值,但如果保存,则总和是正确的,其余事务处理可以完成 我也不能将行项目中的数量“仅仅添加”到总和结果中

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

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

我们有一个需要保存到DB的数量行项目,因为稍后(在同一事务中)我们从同一个表中选择了一个总和(数量),并且结果数量必须符合整个事务有效的特定标准

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

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

如果我可以在当前事务中将单行项目刷新(SQL插入)到DB中,那么系统将正常工作

更多信息:

我发现我在SQL Server上没有遇到这个问题,但在Oracle上却遇到了这个问题。这是威德

所以我深入研究了它,似乎在Hibernate中,当您调用“saveOrUpdate”时,系统会查看实体的@Id是如何生成的

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

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

摘要


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

我认为你不能这样做,就我所知,这是“要么全部插入,要么什么也不插入”。相反,您不能获取保存在数据库中的当前总和(数量),然后将要保存的额外数量添加到数据库中,然后执行验证吗?

我认为您是对的,但有趣的是,如果Hibernate需要Id,它会有选择地插入这些记录,因此内部有一定程度的支持,我很高兴自己能访问它。