Мне нужно, чтобы данные были сохранены, а затем на основе подтвержденных данных, которые мне нужны для дальнейшей обработки.
Вот так выглядит мой код
@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.REQUIRES_NEW) не работает для вызова постоянства?
Нужно ли добавлять метод @Transactional (распространение = Propagation.REQUIRES_NEW) в слой DAO для метода сохранения?