今天想用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() + "%' )")
若还有其它的条件可以如下:
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 连接起来!
分享到:
相关推荐
Hibernate 中,HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者用类名、属性和关联来编写查询,而不是直接使用数据库的SQL语句。HQL的基础包括了各种查询条件的设定,这些条件使得我们可以...
下面我们将深入探讨Hibernate的HQL模糊查询及其应用。 一、HQL概述 HQL是一种面向对象的查询语言,它的语法结构与SQL类似,但更关注于对象和实体,而不是数据库表和列。HQL允许开发者直接操作Java对象,避免了直接...
在Hibernate中,HQL(Hibernate Query Language)是专为ORM设计的一种面向对象的查询语言,它允许开发者以类和对象的方式进行数据查询,而不是直接使用SQL。本资料主要涵盖了Hibernate HQL查询的基本概念、语法以及...
### Hibernate中HQL语句查询学习笔记 #### HQL基础 **HQL**(Hibernate Query Language)是Hibernate框架推荐使用的查询语言,它提供了一种面向对象的方式来查询数据库,支持多种复杂的查询操作,如继承、多态及...
HQL(Hibernate Query Language)是Hibernate框架中用于查询数据的一种语言。它类似于SQL,但面向对象特性更明显,可以更加灵活地处理复杂的对象图关系。HQL支持基本的查询操作如选择、更新、删除等,并且可以方便地...
### Hibernate HQL 教程知识点总结 #### 1.1 HQL基础 ##### 1.1.1 默认数据库表和数据 - **介绍**: 本文档以`joblog`数据库为例,该数据库包含三个表:`student`(学生表)、`course`(课程表)和`sc`(选课表)。 - **...
【hibernate的HQL语句】是Hibernate框架中用于操作数据库的重要组成部分,它是一种面向对象的查询语言,类似于SQL,但更加强调对象的概念。HQL能够处理复杂的对象关系,如继承、多态和关联,使得在进行SSH(Spring、...
Hibernate Query Language(HQL)是Hibernate框架中用于操作对象关系映射(ORM)的一种查询语言。它是面向对象的,设计目的是让开发人员可以使用对象而不是数据库表进行查询,从而简化了与数据库交互的过程。HQL的...
HQL支持各种比较和逻辑操作符,如`=`、`<>`、`>`、`、`>=`、`、`between`、`not between`、`in`、`not in`、`is`、`like`等,用于构建复杂的查询条件。 示例: - `from DomesticCat cat where cat.name between 'A'...
HQL(Hibernate Query Language)是Hibernate提供的一种SQL的面向对象版本,用于在数据库中执行查询。本文将详细探讨HQL中的查询语句,特别是涉及的统计函数和一些关键子句。 首先,`from`子句用于指定查询的源,如...
HQL(Hibernate Query Language)和QBC(Query By Example)是Hibernate提供的两种主要的查询方式,它们提供了灵活且强大的查询能力。下面将详细阐述这两种查询方式以及它们的查询条件。 **HQL(Hibernate Query ...
### NHibernate HQL 可用函数详解 #### 一、查询基本语法与示例 ...以上是NHibernate HQL查询语言的基本使用方法及相关内置函数的详细介绍。通过这些示例,你可以更好地理解和应用HQL来完成数据库操作任务。
=, , >, <, >=, , between, not between, in, not in, is, like ``` #### 三、属性查询 属性查询允许开发者仅获取实体的部分属性,而不是整个实体。例如,如果我们只想获取用户的名字和年龄,可以使用如下HQL...
HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者使用类及其属性来编写查询语句,而不是传统的SQL语句。这使得开发人员可以更加专注于业务逻辑而非底层数据库的细节。 **1.1 基本查询** - *...
本节我们将深入探讨Hibernate中的HQL(Hibernate Query Language)查询,这是一种专为Hibernate设计的面向对象的查询语言,类似于SQL但更贴近于Java程序员的思维。 首先,HQL查询的基本语法结构与SQL类似,但对象化...
Hibernate Query Language(HQL)是Hibernate框架提供的一种面向对象的查询语言,它允许开发者以类和属性的名称来编写查询,而不是传统的SQL中的表和列名。本文将深入探讨“常用易懂,易会”的HQL查询,帮助你快速...
本篇将详细阐述如何使用Hibernate进行数据查询,包括基本数据查询、HQL(Hibernate Query Language)以及查询条件的设定。 1. **基本查询** Hibernate提供了一个简单易用的API来进行数据查询。主要通过`Session`...
在探讨NHibernate HQL条件查询时,我们首先要理解NHibernate框架以及HQL(Hibernate Query Language)的基本概念。NHibernate是一个开放源代码的对象关系映射(ORM)解决方案,它为.NET平台提供了一种将对象模型与...
HQL作为Hibernate的核心组成部分,不仅提供了与Criteria查询类似的面向对象封装,还具有更丰富的查询特性,使得复杂的查询操作变得简单易懂。 【HQL基本结构】 HQL查询语句主要包括以下几个部分: 1. `SELECT`:...
Hibernate Query Language(HQL)是Hibernate框架中的对象关系映射查询语言,它允许开发者以面向对象的方式书写查询,而无需关心底层数据库的SQL语法。HQL是SQL的一个面向对象的版本,提供了更为简洁且强大的查询...