Hibernate的HQL not like查询

  今天想用Hibernate的Restrictions用not like查询,结果发现Restrictions有not和like方法没有notlike方法,ilike表示不区分大小写的模糊查询。我想用Restrictions.not(Restrictions.like(propertyName, value))来查询,结果查看Hibernate生成的SQL语句为:not propertyName like value出了!!!

     后果发现Restrictions有一个sqlRestriction方法,喜出望外!可以用

     Restrictions.sqlRestriction(" VERIFY_RECORD not like '%" + value + "%' ");

     如查询VERIFY_RECORD可以为null或者包含 value字符串可以用:

     Restrictions.sqlRestriction("( VERIFY_RECORD is null or VERIFY_RECORD not like '%"
          + ssoUser.getUserType() + "%' )")

     若还有其它的条件可以如下:

 

Java代码   收藏代码
  1. List<Criterion> criterion = new ArrayList<Criterion>();  
  2.     ReportSSOUser ssoUser = (ReportSSOUser) UserInfoUtils.getCurrentLoginUser();  
  3.     if (StringUtils.isNotBlank(engineering_id)) {  
  4.       criterion.add(Restrictions.eq("engineering_id", engineering_id));  
  5.     } else {  
  6.       criterion.add(Restrictions.eq("engineering_id", ssoUser.getEngineeringId()));  
  7.     }  
  8.     if (StringUtils.isNotBlank(ssoUser.getSectionId())) {  
  9.       criterion.add(Restrictions.eq("section_id", ssoUser.getSectionId()));  
  10.     }  
  11.     if (StringUtils.isNotBlank(model.getReport_id())) {  
  12.       criterion.add(Restrictions.eq("report_id", model.getReport_id()));  
  13.     }  
  14.     criterion.add(Restrictions.eq("report_status", RptReportInstance.REPORT_STATUS_WAIT_APPROVAL));  
  15.     // 查询不包括自己已经审核了的报表信息  
  16.     if (ssoUser.getUserType() != null) {  
  17.       criterion.add(Restrictions.sqlRestriction("( VERIFY_RECORD is null or VERIFY_RECORD not like '%"  
  18.           + ssoUser.getUserType() + "%' )"));  
  19.     }  

   总结如下:

         criterion.add()中的Hibernate都会把它作为一个SQL语句where 后来的 and 连接起来!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值