我写了一个小的ssh的demo,在tomcat下配置好后,启动没有报任何错误,service中用到hibernatetemplate,是用spring注入进去的,使用save方法想保存对象,控制台已经显示输出了insert语句,但数据库为插入任何记录.用debug查看hibernatetemplate,sessionFactory都有取到对象,但就是插入不了记录.帮忙分析下,是什么原因呢?
有没有遇到这种情况解决过的?
Spring Hibernate 整合问题?急
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- iteye_14948 2008-10-24 08:32关注
应该是没有配置事务吧,在你的save方法,上下各加一行,把save方法包住,如下:
[code="java"] getHibernateTemplate().getSessionFactory().openSession().beginTransaction();
getHibernateTemplate().save(transientInstance);
getHibernateTemplate().getSessionFactory().openSession().beginTransaction().commit();
[/code]
如果数据库里有了,那就说明确实是事务配置的问题。上面的代码只是帮你定位错误,千万不要这么用。
之后的请查下spring事务配置,下面是我的spring配置文件片段:
[code="java"]
class="org.springframework.jndi.JndiObjectFactoryBean">
class="org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter"><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.DB2390Dialect </prop> <prop key="show_sql">true</prop> </props> </property> <property name="mappingResources"> <list> <value>dm/domain/VehicleType.hbm.xml</value> <value>dm/domain/Vehicle.hbm.xml</value> <!--<value>dm/domain/OldVehicle.hbm.xml</value>--> <value>dm/domain/Driver.hbm.xml</value> <!--<value>dm/domain/OldDriver.hbm.xml</value>--> <value>dm/domain/DispatchTask.hbm.xml</value> </list> </property> </bean> <!-- 定义事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!-- 定义事务拦截器 --> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="add*">PROPAGATION_REQUIRED</prop> <prop key="del*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <!-- 定义自动配置事务处理 --> <bean id="beanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>*Service</value> </list> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> <!--<property name="proxyTargetClass" value="true" />--> </bean>
[/code]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报