【发布时间】:2012-06-05 21:09:08
【问题描述】:
我在使用 JTA 事务管理器时迁移到休眠 4 时遇到了一些问题。
也许你可以帮忙,因为我完全没有想法。
软件:
春季:3.1.1.RELEASE
休眠:4.1.3.Final
数据库:Oracle 11g
应用:Ejb 3.0部署在Websphere Application Server 7.0中(使用@Interceptors(SpringBeanAutowiringInterceptor.class)初始化spring上下文)
弹簧配置:
<context:annotation-config />
<context:component-scan base-package="myServicePackage,myDaoPackage" />
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/MyDataSource" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="myModelPackage" />
<property name="mappingResources" value="queries.xml" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
</props>
</property>
</bean>
<tx:jta-transaction-manager />
<!-- <bean id="transactionManager" class="org.springframework.transaction.jta.WebSphereUowTransactionManager" /> -->
<tx:annotation-driven />
服务:
@Service
public class TradeService {
@Autowired
private TradeDao tradeDao;
}
道:
@Repository
@Transactional
public class TradeDao {
@Autowired
private SessionFactory sessionFactory;
public Trade getTrade(){
return (Trade) sessionFactory.getCurrentSession().getNamedQuery("get_trade").uniqueResult();
}
投掷:
org.hibernate.HibernateException: No Session found for current thread
at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:97)
at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1041)
at myDaoPackage.TradeDao.getTrade(TradeDao.java:26)
注意事项:
- 我还尝试在服务上使用
@Transactional而不是 道。结果相同。 - 类似的配置,但使用 Spring 3.0.5.RELEASE、Hibernate 3.6.5.Final 和扩展
HibernateDaoSupport的 TradeDao 有效。
那么,有人有什么想法吗?
我今天一整天都在尝试很多事情。
我的头在旋转,我很生气,所以我一定错过了一些非常简单的东西,但现在我真的说不出来:)
【问题讨论】:
标签: spring hibernate websphere jta spring-transactions