Hibernate的HQL not like查询

    xiaoxiao2021-03-26  26

      今天想用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代码   List<Criterion> criterion = new ArrayList<Criterion>();       ReportSSOUser ssoUser = (ReportSSOUser) UserInfoUtils.getCurrentLoginUser();       if (StringUtils.isNotBlank(engineering_id)) {         criterion.add(Restrictions.eq("engineering_id", engineering_id));       } else {         criterion.add(Restrictions.eq("engineering_id", ssoUser.getEngineeringId()));       }       if (StringUtils.isNotBlank(ssoUser.getSectionId())) {         criterion.add(Restrictions.eq("section_id", ssoUser.getSectionId()));       }       if (StringUtils.isNotBlank(model.getReport_id())) {         criterion.add(Restrictions.eq("report_id", model.getReport_id()));       }       criterion.add(Restrictions.eq("report_status", RptReportInstance.REPORT_STATUS_WAIT_APPROVAL));       // 查询不包括自己已经审核了的报表信息       if (ssoUser.getUserType() != null) {         criterion.add(Restrictions.sqlRestriction("( VERIFY_RECORD is null or VERIFY_RECORD not like '%"             + ssoUser.getUserType() + "%' )"));       }  

       总结如下:

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

    转载请注明原文地址: https://ju.6miu.com/read-663634.html

    最新回复(0)