0

我在一种方法(has @Transactional(propagation = Propagation.Required))中插入数据,但在另一种方法(has @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
    }
}
4

3 回答 3

1

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

于 2016-03-21T14:21:35.580 回答
0

它可能有效,但不是解决方案。在您的情况下,您的TransactionfromService.method()创建了一个尚未提交的事务。这就是为什么你无法获取它。

于 2021-08-09T14:04:00.940 回答
-1

我找到了答案……从它中删除 @transactional 后ServiceLayer.method2()效果很好。

于 2016-05-11T07:24:17.453 回答