Java: Как использовать Future в транзакции - PullRequest
0 голосов
/ 26 марта 2020

У меня есть транзакционный метод saveAnswer. В этом методе я вызываю метод сохранения из JpaRepository. Затем я использую Future, который вызывает метод findById, и этот метод возвращает значение NULL. Но если я вызову метод finById за Future, я получу ожидаемый результат.

Как я понимаю, в будущем запускается новый поток, и этот шаг не знает ничего о действиях в транзакции. Как я могу обойти это?

    class MyClass{
        JpaRepostory answerRepository;
        ...
        @Transactional
        Answer saveAnswer(answerDto AnswerDto){
        Answer result = answerRepostory.save(answerDto);
        ...
        Future<Answer> future = executor.submit( ()- > someClass.run(result.id))
        future.get()
}

    class SomeClasss{
        run(Long id ){
        answerRepostory.findById(id) 
        }
    }
...