Я использую Spring 3.0.5, Hibernate 3.6.7 и Vaadin.Спящий режим «сеанс не был закрыт» даже с Session bound в методе транзакции
У меня есть простой объект, который, как это
@Entity
public class Foo {
@OneToMany(fetch = FetchType.LAZY)
private Collection<Bar> bars;
...
}
У меня есть окно Dialog, что я получаю от контекста и его должны показать «бруски» от «обув».
@Component
@Scope("prototype")
public class FooBarDialogImp extends Window implements FooBarDialog {
@Transactional(readOnly = true)
public void populate(Foo foo) {
...
for (Bar bar : foo.getBars()) {
// populate the dialog with bar information
...
}
}
}
И когда пользователь просит показать Foo бары, я сделать что-то вроде этого
public class FooController {
...
public void showFooBars(Foo foo) {
FooBarDialog dialog = context.getBean(FooBarDialog.class);
dialog.populate(foo);
showDialog(dialog);
}
}
, но проблема в том, что я получаю «нет сеансов» исключение из спящего режима. Я изменил код, чтобы ввести фабрику сеансов и посмотреть, была ли связанная сессия, и это было. Я не знаю, что я делаю неправильно. У кого-нибудь есть идея?
awesome. Я не думал о том, что сущность отделена от сеанса. Ваш ответ дал свет, чтобы найти лучшее решение. Благодаря :) –