Re[4]: Вложенные транзакции
От: sgp  
Дата: 14.04.15 07:39
Оценка:
Здравствуйте, 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 в пределах одного метода сервисного класса выполнялись в рамках одной транзакции?

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.