Я использую Spring для управления транзакциями на моем сервисном уровне с аннотацией @Transactional
.Это хорошо для загруженной коллекции, но плохо для отложенной загрузки.
Я не могу использовать шаблон OSV, мое приложение является автономным настольным клиентским приложением.
Так что яЯ подумал о решении, и вот что я пытался сделать:
public abstract class TransactionTask {
public TransactionTask() {
}
public abstract void job();
}
В моем сервисе у меня есть:
@Transactional
public void doJob(Transactiontask tt){
tt.job();
}
И как я его использую:
myService.doJob(new TransactionTask() {
@Override
public void job() {
//lazy code here
}
});
Я ожидаю увидеть этот код работающим, потому что сеанс открыт в методе doJob (он помечен как транзакционный), но он не работает ... исключение составляет no session or session was closed
.Почему этот код не работает, и как я могу загрузить коллекцию только тогда, когда она мне нужна?
Я не хочу писать сервис с указанным методом для загрузки коллекции, это не решение.