我正在使用 Spring 3.2 与休眠 4 集成这是我的代码
@Service
public class MyService{
@AutoWired
private NestedServcie ns;
@Transactional(propagation=Propagation.REQUIRED)
public void outer(){
while(true){
dao.findOne(); // This method find data from db using hibernate hql
ns.inner(); // insert some data and commit and loop again.
}
}
}
@Service
public class NestedServcie{
@Transactional(propagation=Propagation.REQUIRES_NEW)
public void inner(){
//here insert some data into db using hibernate
}
}
这是弹簧配置xml
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
这是我在运行这个程序之前的问题,db 中没有数据,所以 dao.findOne() 在第一个循环中为空。但是在 ns.inner() 执行之后,我将一些数据插入到 db 并提交(我认为 REQUIRES_NEW 可以工作)。而当第二个循环开始时,dao.findOne 仍然为null,外部无法获取内部插入数据。为什么??
谢谢!!