获取在同一事务中使用@Transactional插入的数据

时间:2016-03-21 13:43:27

标签: java spring spring-mvc spring-mybatis

我在一个方法中插入数据(有@Transactional(propagation = Propagation.Required)),但在另一个方法中(有@Transactional(propagation = Propagation.Required)),如果我尝试获取相同的数据,它会给出null。

这两种方法都是在@Transactional (rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)

的服务层中编写的

如何获取插入同一事务的数据。 类似的东西: -

 @Service
    public class Service{
        @Transactional
        public void method(){
            mapper.insert();        //insert to DB(Using Mapper interface)
            ServiceLayer.method2()
        }
    }

@Service
public void ServiceLayer{

    @Transactional
    public static void method2(){
        result  = mapper.select() //Select inserted data - returning null
    }
}

3 个答案:

答案 0 :(得分:1)

为了保留对当前会话所做的更改,您可以调用entityManager.flush();

答案 1 :(得分:0)

我找到了答案......从ServiceLayer.method2()删除@transactional后,它运行良好。

答案 2 :(得分:0)

它可能有效,但不是解决方案。 在您的情况下,您来自 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/splash_bg" /> <item> <bitmap android:gravity="centre" android:src="@drawable/splash_logo" /> </item> </layer-list> Transaction 创建了一个尚未提交的事务。这就是你无法获取它的原因。