Я использую Hibernate3 с Spring 3. Я пытаюсь запустить транзакцию hibernate с помощью Spring.
Ниже приведены мои конфигурации
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
Я получаю следующую ошибку при запуске приложения.
HibernateException: get is not valid without active transaction
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:341)
У меня есть следующая строка в конфигурации hibernate xml
<property name="hibernate.current_session_context_class">thread</property>
Код, который использует транзакцию гибернации:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
Book book = (Book)session.get(Book.class, id);
Что может быть не так в этом? Является ли значение для current_session_context_class чем-то отличным от thread?