如何在存储过程中的查询,了解Spring的事务吗?(How to make the queries

2019-10-17 01:22发布

之后,我执行了一堆查询在DB的,我打电话从Spring事务的存储过程(一个Spring服务标有@Transactional)。

entityManager.createNativeQuery("call stored_procedure()");
query.executeUpdate();

为了使存储过程回滚的查询时异常是由Java代码引发(或DB在javacode所做的修改卷起因为在存储过程中引发的异常背面),我已经设置了自动提交MySQL服务器错误的变量。 这解决了我的问题的一部分。 我现在所有的代码数据库事务。 我的问题是,存储过程的查询,不知道在Java代码中所做的修改(对DB)的。 即从存储过程中选择读取数在DB Spring的事务开始前的值。

我的问题是(一个在标题中所述)如何使在存储过程中意识到之前的存储过程Spring的事务到数据库所做的修改的查询被称为(从交易)?

不幸的是设置DB脏读现在不是我的选择。 难道是possivle得到那个春天MySQL的开放交易的ID,并运行事务中的存储过程的查询?

谢谢

Answer 1:

原来,我需要调用平齐的实体管理器,以便同步持久化上下文的基础数据库。 此外,我除去从SP的任何事务管理指令,和它的工作如预期; 在存储过程中的查询现在是由Spring管理的事务的一部分。



文章来源: How to make the queries in a stored procedure aware of the Spring Transaction?