Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, sgp, Вы писали:
sgp>>Есть идеи куда глянуть?
B>В логи и в спринговый Transaction Manager.
Продолжая тему вложенных транзакций появился еще вопрос. Есть 2 фрагмента кода:
// Случай 1
public class TestService {
@Autowired
private JpaRepository<User, String> userRepository;
@Transactional(propagation = Propagation.REQUIRES_NEW,isolation = Isolation.SERIALIZABLE)
void testTransaction(){
User user = userRepository.findOne("Tom");
user.setAge(20);
userRepository.save(user);
}
}
// Случай 2
public class TestServiceEm {
@PersistenceContext(unitName="default")
EntityManager em;
@Transactional(propagation = Propagation.REQUIRES_NEW,isolation = Isolation.SERIALIZABLE)
void testTransaction(){
User user = em.find("Tom");
user.setAge(25);
em.merge(user);
}
}
В первом случае открывается транзакция при входе в метод TestService.testTransaction, после чего вызовы методов userRepository выполняется в отдельных вложенных транзакциях.
Во втором случае все вызовы к EntityManager в теле метода TestServiceEm.testTransaction() выполняется в рамках одной транзакции.
Подскажите, пожалуйста, можно ли добиться что бы несколько вызовов JpaRepository в пределах одного метода сервисного класса выполнялись в рамках одной транзакции?
Спасибо.