我需要持久化数据,然后根据提交的数据进行进一步处理。
这是我的代码的样子
@Service
public class A{
@Autowired
B b;
public method A() {
b.methodB(value);
// do some calculation
b.methodC(value);
}
}
@Service
public class B{
@Autowired
Dao dao;
@Override
@Transactional(propagation=Propagation.REQUIRES_NEW)
public methodB(String value){
dao.save(value);
}
@Override
@Transactional(propagation=Propagation.REQUIRES_NEW)
public methodC(String value){
dao.update(value);
}
}
@Repository
public class DaoImpl implement Dao{
@Override
public void saveBenefitCounter(BString value) {
manager.persist(value);
}
@Override
public void update(String value) {
manager.merge(value);
}
}
问题是第一个数据没有提交,因为此插入数据在用于methodC方法之前没有持久化。
我可以知道为什么@Transactional(propagation = Propagation.REQUIRES_NEW)无法用于持久调用吗?
是否需要在DAO层中添加@Transactional(propagation = Propagation.REQUIRES_NEW)作为保存方法?