Можно ли пометить один метод всего класса @Transactional как нетранзакционный - PullRequest
3 голосов
/ 25 октября 2011

Мне нужно поддерживать транзакцию вручную в методе класса, который был помечен как @Transactional.Если я попытаюсь сделать это сейчас, будет выдано исключение (скорее всего, потому что транзакция совершается дважды, один раз мной и дважды прокси-оболочкой).Что мне нужно делать.

Если это невозможно, то есть ли способ получить уведомление, когда транзакция была успешно зафиксирована (данные в БД и все остальное), чтобы я вызывал другое приложение, которое полагается на ту же БД?

Ответы [ 2 ]

1 голос
/ 25 октября 2011

Надеюсь, вы используете пружину .Если да, то вы можете.

Считать этот блок кода из API здесь .в разделе 10.5.6 Использование @ Transactional

@Transactional(readOnly = true)
public class DefaultFooService implements FooService {

 public Foo getFoo(String fooName) {
// do something
}

// these settings have precedence for this method
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void updateFoo(Foo foo) {
 // do something
}
}
0 голосов
/ 25 октября 2011

Нет, я не верю, что это возможно.Я полагаю, что если вы создадите другой поток и выполните код, он все равно будет вне транзакции.Будьте осторожны с этим, потому что это может стать рискованным, когда вы создаете дополнительные потоки и управляете этим самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...