hibernate native sql 查询介绍

有些时候,hibernate  session.query()或者find没法执行一些原生的DB的一些函数或者特点或者无法执行子查询,或者要使用数据库的某些特性的时候(比如说在查询提示或者Oracle中的 CONNECT关键字),
一般都会搭配jdbc来做,但是这样的话,总感觉不是特别好,不用spring的话,还得注意这个额外开的数据库连接的管理问题,hibernate提供了native sql查询这种方式,这就能够扫清你把原来直接使用SQL/JDBC 的程序迁移到基于 Hibernate应用的道路上的障碍。Hibernate3允许你使用手写的sql来完成所有的create,update,delete,和load操作(包括存储过程)

做法只要在

映射文档中定义查询的名字,然后就可以象调用一个命名的HQL查询一样直接调用命名SQL查询

  1. <sql-query name="queryProductLineForExist">
  2.             <return-scalar column="ProductLine" type="string"/>
  3.             Select 'exist' as exist from tableName a
  4.              where 1=1
  5.              and productline = :productline
  6.                and to_date(a.yyyymm,'yyyymm') >= add_months(to_date((select max(b.yyyymm) from tableName b), 'yyyymm'), -2)
  7. </sql-query>
调用方法是
  1. Session session = this.getSession();
  2. Query query = session.getNamedQuery("queryProductLineForExist");
  3. list = query.list();
  4. return list;

经常做sql的人因该经常碰到hql或者一些sql在DB工具里面能执行,但是hibernate执行就报错的问题吧,上面就能在不用jdbc的情况下搞定,做个小结,呵呵
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值