2013-05-10 2 views
0

Итак, я понимаю веб-приложение Java EE (PrimeFaces, Spring, Hibernate) во время продвижения по программированию, я обнаружил, что вся ассоциация между типом класса Lazy не всегда работает («сеанс типа ошибки был закрыт ».)Lazy to Eager каждый раз с Spring

Поэтому я вынужден каждый раз работать с каждым из вас, чтобы устранить эту ошибку. Я думаю, что моя работа не очень хорошая.

они сказали мне, что весна не позволяет режим «Ленивый», и если я хочу работать с ленивым можем, нужно добавить (слушатель или фильтр) в web.xml. Это правда?

Можете ли вы привести мне пример, используя интенсивную загрузку?

+3

Вы должны понять, как hibernate управляет его сеансами. Когда у вас 'Lazy', он будет пытаться загружать объекты только тогда, когда они нужны, но если сеанс закрыт, их невозможно восстановить. Посмотрите на ['PersistenList'] (http://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/collection/PersistentList.html), например, или как Hibernate обертывает ваши объекты в прокси. –

+1

http://stackoverflow.com/questions/578433/how-to-solve-lazy-initialization-exception-using-jpa-and-hibernate-as-provider – Patison

+1

@vasileusky Я бы не сказал, что он может вернуться к укусу вы в попке, у него все еще есть серьезные ошибки, и он не рекомендуется для производственной среды. Вместо этого попробуйте OEMIVFilter. – Ziul

ответ

1

So. Для того, чтобы получить «ленивые» данные в поле зрения можно добавить в контекстное приложение специальный перехватчик:

<mvc:interceptors> 
    <bean 
     class="org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 
</mvc:interceptors> 

или, если вы не боитесь вы можете изменить entityManagerFactory, добавив новое свойство:

<property name="jpaProperties"> 
    <props> 
     <prop key="hibernate.enable_lazy_load_no_trans">true</prop> 
    </props> 
</property> 

, но это не рекомендуется, потому что он по-прежнему полон ошибок

+1

Прочитайте эту дискуссию: http://stackoverflow.com/questions/15235633/why -is-hibernate-deleting-my-collection-entries-when-all-i-do-is-list Кажется, что он работает корректно в спящем режиме 4.1.7, и даже в этом случае есть некоторые вещи, которые нужно знать из. Рекомендация не использовать в производственной среде еще, происходит от команды Hibernate. – Ziul

+0

Thx aigain @vasileusky (я не использую JPA либо Spring MVC) только Hibernate 4 и Spring 3 ..could этой работы – salvador

+0

Поэтому я резюмировать я должен добавить фильтр entityManagerInViewFilter <имя-фильтр /> <фильтр- класс> org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter entityManagerFactoryBeanName EntityManagerFactory <фильтр-отображения> entityManagerInViewFilter /* ЗАПРОС salvador

Смежные вопросы