Весна сочетается с зимней спячкой

Я сталкиваюсь с проблемой: когда я использую hibernate без Spring, я всегда пишу следующую конфигурацию в hibernate.cfg.xml:

<property name="current_session_context_class">thread</property>

это связывает видение с потоком. Но когда я использую hibernate вместе с Spring, я не знаю, как реализовать ту же конфигурацию, я также записываю ее в applicationContext.xml, но она не работает. бросить исключение:

org.hibernate.HibernateException: ни один Hibernate Session не привязан к потоку, и конфигурация не позволяет создавать нетранзакционный сеанс здесь

На самом деле, я просто хочу привязать сессию к потоку, затем я могу использовать метод getcurrentSession из sessionfactory. Кто-то сталкивался с той же проблемой, что и я, как ее решить. Большое спасибо

1 ответ

Решение

Попробуйте добавить @Transactional аннотации на ваш метод, который использует Hibernate сессии.

Кажется, что ваши методы нуждаются в транзакции.


Существует множество способов настроить использование транзакций в Spring.

Ниже один из них.

Просто фрагмент, так что вы должны использовать этот код по-своему.

<tx:annotation-driven/>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"
        p:sessionFactory-ref="sessionFactory" />

См. SpringMVC 3.2 hibernate docs для получения дополнительной информации.

Другие вопросы по тегам