返回信息流小弟采用了spring+hibernate访问mysql数据库,通过myEclipse自动生成了pojo类和映射文件还有dao。其中保存的dao是这样的:
public void save(Role transientInstance) {
log.debug("saving Role instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
也不报错,但是数据就是保存不到数据库当中,可是getHibernateTemplate().get没问题,卡了两天了也没有解决,希望大家不吝赐教,感激不尽~~~[em9][em9]
这是一条镜像帖。来源:北邮人论坛 / java / #18032同步于 2011/4/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
求助:spring DAO的getHibernateTemplate.save无法保存数据
IIBUPT
2011/4/27镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
getHibernateTemplate()返回的是一个session对象么?
commit了么?
【 在 IIBUPT (北邮人) 的大作中提到: 】
: 小弟采用了spring+hibernate访问mysql数据库,通过myEclipse自动生成了pojo类和映射文件还有dao。其中保存的dao是这样的:
: public void save(Role transientInstance) {
: log.debug("saving Role instance");
: ...................
初学java,不知道getHibernateTemplate的返回值是一个session对象啊!!
我以为返回值是void呢
怎样commit?
【 在 ox 的大作中提到: 】
: getHibernateTemplate()返回的是一个session对象么?
: commit了么?
: 【 在 IIBUPT (北邮人) 的大作中提到: 】
: ...................
我在网上搜了一下,都说是事务的问题,我就在spring中配置了事务,可是还不行呐
小贝师兄看看问题出在哪了?
<bean id="RoleDAOTarget" class="pack1.RoleDAO">
<property name="sessionFactory"><ref local="sessionFactory"/> </property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref local="sessionFactory"/> </property>
</bean>
<bean id="RoleDAO" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager"><ref local="transactionManager"/> </property>
<property name="target"><ref local="RoleDAOTarget"/> </property>
<property name="transactionAttributes">
<props>
<!-- <prop key="insert*">PROPAGATION_REQUIRED</prop>-->
<!-- <prop key="update*">PROPAGATION_REQUIRED</prop>-->
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
【 在 ox 的大作中提到: 】
: getHibernateTemplate()返回的是一个session对象么?
: commit了么?
: 【 在 IIBUPT (北邮人) 的大作中提到: 】
: ...................
映射文件时myEclipse自动生成的,我也没修改过,会出什么意想不到的问题呢?
忘了说了就是读数据库没问题,但是写或者修改就不行。。。
<hibernate-mapping>
<class name="pack1.Role" table="role" catalog="test">
<id name="roleId" type="java.lang.Integer">
<column name="RoleId" />
<generator class="native" />
</id>
<property name="roleName" type="java.lang.String">
<column name="RoleName" length="100" not-null="true" />
</property>
<property name="roleLevel" type="java.lang.Integer">
<column name="RoleLevel" not-null="true" />
</property>
</class>
</hibernate-mapping>
【 在 novacaine 的大作中提到: 】
: 看看 hibernate-mapping 有无问题?
: --
事务一般是这样用的
Transaction tx = session.beginTransaction();
session.save(obj);
tx.commit();
但是你用Spring的话,事务应该被Spring接管了吧,看看配置上是不是有问题
【 在 IIBUPT (北邮人) 的大作中提到: 】
: 初学java,不知道getHibernateTemplate的返回值是一个session对象啊!!
: 我以为返回值是void呢
: 怎样commit?
: ...................
恩 这种方法我试了 可以保存到数据库 可是用spring的getHibernateTemplate().save方法就不行。。郁闷啊 我觉得配置应该没问题呀 否则为什么可以读数据库呢 偏偏不能写,这会是什么原因能导致这种情况呀?
【 在 ox 的大作中提到: 】
: 事务一般是这样用的
: Transaction tx = session.beginTransaction();
: session.save(obj);
: ...................
用getHibernateTemplate()的时候自己就不用关心事务了吧,我都没配过事务 - - 再看看dataSource 和 sessionFactory是否有错呗。。。
唉 实在看不出问题出哪了
【 在 novacaine 的大作中提到: 】
: 用getHibernateTemplate()的时候自己就不用关心事务了吧,我都没配过事务 - - 再看看dataSource 和 sessionFactory是否有错呗。。。
: --