java - conectar - No hay sesión de Hibernate enlazada a hilo, y la configuración no permite la creación de una transacción no transaccional aquí
conectar a base de datos con hibernate (2)
¿De qué se trata este error? " No hay sesión de Hibernate enlazada a hilo, y la configuración no permite la creación de una no transaccional aquí ". Mi archivo de configuración de primavera se ve algo como esto.
<bean id="jndiDataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:/devDS</value>
</property>
</bean>
<bean id="stsaDBFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="jndiDataSource" />
<property name="annotatedClasses">
<list>
<value>xx.yy.zz.User</value>
<value>xx.yy.UserResponse</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbmddl.auto">create</prop>
</props>
</property>
</bean>
<!-- ################################### Aspects ################################################## -->
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="stsaDBFactory" />
</property>
</bean>
Todas las pruebas de DAO pasan cuando las pruebo fuera del contenedor utilizando Junit. Cuando lo implemento en jBoss como una aplicación de portal, obtengo esta excepción. También funciona bien si elimino la configuración específica del portal y la convierto en una aplicación web simple y la implemento en jboss. ¿Alguna idea?
Ha definido un TransactionManager en su configuración de primavera pero está intentando ejecutar una consulta de hibernación en un método que no es transaccional. Intenta agregar @Transactional a tu método o clase.
Resolví este problema especificando current_session_context_class
en hibernate config
para que sea " thread
", según la configuración simple que se muestra en la documentación de configuración de hibernate .
Pero recomienda que no sea seguro para el uso de producción.
Tratar de agregar lo siguiente en la hibernate config
también debería ayudar:
<property name="current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property>
Consulte más información en http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/architecture.html#architecture-current-session para obtener más información.