如何使用HibernateTemplate执行Sql(非查询)语句

本文介绍了在项目开发中遇到联合主键表更新问题时,如何使用HibernateTemplate执行非查询Sql语句。由于HibernateTemplate的update方法无法处理联合主键的更新,作者通过搜索找到一种方法,该方法要求Sql语句为final类型且仅适用于非Select操作。对于Select语句,可以使用session.createQuery().list()执行。
摘要由CSDN通过智能技术生成

今天在项目开发的时候,碰到一个联合主键的表更新的问题,我是使用controller将实体类传到dao层的update方法里面的,由于上面刚用HibernateTemplate做了save操作,也是传的对象,上面的插入操作没有什么问题,控制台里面也打印出了Hibernate的insert语句,于是我直接复制上面的代码,然后改成了update操作,测试了一下,发现并没有报错,一开始我以为更新成功了,但是看到控制台没有打印出update的语句,然后去数据库查看果然数据没有更新,刷新也没有用,我马上想到了这个表是联合主键,直接用HibernateTemplate的update方法不能进行更新,我就想用HibernateTemplate直接来执行update的sql语句,于是上网搜了一下,发现了一个很好用的方法,方法如下:

public static void executeSQL(HibernateTemplate hibernateTemplate,String sql)
    {
       final String tempsql = sql;
       hibernateTemplate.execute(new HibernateCallback()
       {
           public Object doInHibernate(Session session) throws HibernateException
           {
              session.createQuery(tempsql).executeUpdate();
              return null;
           }
       });
    }

该方法里面的sql语句必须为final类型的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值