Я использую Spring 3.0.5, Hibernate 3.6.7 и Vaadin.
У меня есть простая сущность, подобная этой
@Entity
public class Foo {
@OneToMany(fetch = FetchType.LAZY)
private Collection<Bar> bars;
...
}
У меня есть диалоговое окно, которое я получаю из контекста, и оно должно показывать «бары» из «foo».
@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);
}
}
но проблема в том, что я получаю исключение "без сеанса" из спящего режима. Я изменил код, чтобы внедрить фабрику сеансов и посмотреть, был ли связанный сеанс, и это было. Я не знаю, что я делаю не так. У кого-нибудь есть идея?