在Spring使用getHibernateTemplate().save()为何不能更新数据库

在Spring应用中使用HibernateTemplate的save()方法尝试更新数据库时遇到问题,尽管控制台显示了相关SQL操作,但实际数据库并未更新。问题出在缺少自动提交设置。通过在hibernate.cfg.xml配置文件中添加`<property name="connection.autocommit">true</property>`,确保数据库连接自动提交,从而解决了更新失败的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在applicationContext.xml中配置如下

<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation"
            value="classpath:hibernate.cfg.xml">
        </property>
    </bean>

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">

      <property name="sessionFactory" ref="sessionFactory"></property>

 </bean>

在dao实现中调用    this.hibernateTemplate.save(entity);控制台打印如下信息

Hibernate: select sshproduct0_.id as id2_0_, sshproduct0_.category_id as category2_2_0_, sshproduct0_.name as name2_0_, sshproduct0_.price as price2_0_, sshproduct0_.mounts as mounts2_0_, sshproduct0_.sellMounts as sellMounts2_0_ from hibernate.ssh_product sshproduct0_ where sshproduct0_.id=?
Hibernate: select sshorderit0_.prouct_id as prouct3_1_, sshorderit0_.id as id1_, sshorderit0_.id as id3_0_, sshorderit0_.orders_id as orders2_3_0_, sshorderit0_.prouct_id as prouct3_3_0_, sshorderit0_.mounts as mounts3_0_ from hibernate.ssh_orderitem sshorderit0_ where sshorderit0_.prouct_id=?
Hibernate: select max(id) from ssh_orders
Hibernate: select max(id) from ssh_orderitem
Hibernate: insert into hibernate.ssh_orders (user_id, orderId, id) values (?, ?, ?)
Hibernate: insert into hibernate.ssh_orderitem (orders_id, prouct_id, mounts, id) values (?, ?, ?, ?)
Hibernate: update hibernate.ssh_product set category_id=?, name=?, price=?, mounts=?, sellMounts=? where id=?

但是数据库中的数据并没有更新,后来在hibernate.cfg.xml中配置如下一句话:<property name="connection.autocommit">true</property>

终于成功了



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值