Я использую vanilla Spring MVC с пользовательской реализацией FlashScope.Мы в основном используем его, чтобы следовать шаблону Post-Redirect-Get.
Я столкнулся со странной ситуацией.В своем посте я выполняю поиск параметров, введенных пользователем, и устанавливаю эти экземпляры на FlashScope.Я вижу, эти штуки работают просто отлично.
В объекте, который я помещаю на FlashScope, у меня есть отложенная загрузка коллекции, однако, когда я пытаюсь получить доступ к коллекции следующим образом:
entity.getLazyLoadedCollection();
Я получаю следующую трассировку стека:
ERROR org.hibernate.LazyInitializationException IP127.0.0.1 CV#4c44559c-c576-4732 P#75004 - could not initialize proxy - no Session
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at core.model.entities.WorkflowState_$$_javassist_36.getFunctions(WorkflowState_$$_javassist_36.java)
Странно то, что прямо перед вызовом выше я объединяю его с сеансом на своем уровне обслуживания:
getSession().merge(entity);
Документация Hibernate заявляет, что я должен вызвать update, еслиЯ знаю, что работаю с новым сеансом, но JavaDocs создает впечатление, что я должен вызывать слияние ...
В качестве обходного пути я сделал следующее:
if (getSession().contains(entity)) {
getHibernateTemplate().merge(person);
} else {
getSession.update(entity);
}
Что мне здесь делать?