首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

具有Criteria限制的Hibernate搜索返回不正确的计数

在Hibernate中,Criteria限制用于限制查询结果。如果使用Criteria限制来查询Hibernate,则可能会导致返回不正确的计数。这是因为在Hibernate中,Criteria限制不支持对每个子查询结果进行计数。

为了解决这个问题,可以使用HQL查询或原生SQL查询来代替Criteria限制。例如,可以使用以下HQL查询来限制查询结果:

代码语言:php
复制
SELECT COUNT(DISTINCT t.id) FROM MyTable t
WHERE t.status = 'active'

该HQL查询将返回MyTable表中所有状态为active的记录的不重复计数。

如果使用原生SQL查询,则可以使用以下SQL查询来限制查询结果:

代码语言:sql
复制
SELECT COUNT(DISTINCT t.id) FROM MyTable t
WHERE t.status = 'active'

该SQL查询将返回MyTable表中所有状态为active的记录的不重复计数。

无论使用哪种查询方式,都需要注意限制查询结果,以避免返回不正确的计数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • SSH框架之旅-hibernate(4)

    hibernate 1.hibernate 查询方式 ---- 对象导航查询 一个对象关联了另一个对象,并且两者是一对多关系,那么通过一个(一方)对象就可以找到另外一个(多方)对象。...QBC 查询 使用 Criteria 对象调用相关方法做查询,但是不需要写语句,调用是方法,操作也是实体类和属性。...但如果需要底层数据库 SQL 方言查询时,还是可以使用这种方式hibernate 种也封装了 SQL 查询对象 SQLQuery。...交叉查询 查询结果是返回被连接表中所有数据行笛卡尔积,返回结果条数也就是一个表数据记录乘以另一个比表数据记录数,在开发中最好不要使用交叉查询,因为数据量不算很大时,查询效率就极低,在设计数据表时应该避免这种查询方式...,还有迫切内连接查询,迫切连接查询比一般内连接查询多了一个 fetch 关键字两种方式返回结果集不同。

    1.7K30

    持久层框架中是什么让你选择 MyBatis?

    另外,有一些查询返回数据是需要本地缓存,这样可以提高整个程序查询性能,这就需要缓存支持。...Hibernate 现在也在扩展自己生态,开始支持多种异构数据持久化,不仅仅提供 ORM 框架,还提供了 Hibernate Search 来支持全文搜索,提供 validation 来进行数据校验...例如,Hibernate 为用户提供 Criteria 是一套灵活、可扩展数据操纵 API,最重要Criteria 是一套面向对象 API,使用它操作数据库时候,Java 开发者只需要关注...Criteria 这套 API 以及返回 Java 对象,不需要考虑数据库底层如何实现、SQL 语句如何编写,等等。...另外,Hibernate具有如下一些其他优点:Hibernate API 本身没有侵入性,也就是说,业务逻辑感知不到 Hibernate 存在,也不需要继承任何 Hibernate 包中接口;

    47230

    Hibernate框架学习之二

    主键类型  在讲解 Hibernate主键生成策略之前,先来了解两个概念,即自然主键和代理主键,具体如下: 自然主键(业务主键):把具有业务含义字段作为主键,称之为自然主键。...Criteria查询,又称为QBC查询( Query By Criteria),它是 Hibernate另一种对象检索方式。   ...org.hibernate.criterion.Criterion 是 Hibernate提供一个面向对象查询条件接口,一个单独查询就是 Criterion接口一个实例,用于限制 Criteria...通常,使用 Criteria对象查询数据主要步骤,具体如下: 获得 Hibernate  Session对象。 通过 Session 获得 Criteria对象。...criteria.list( ) 方法查询全部数据外,还有其它一些常用方法:如果只返回一个值时,可以使用 criteria  uniqueResult( ) 方法;如果需要分页时可以使用 setFirstResult

    81850

    hibernate 检索方式

    在默认情况下, Query 和 Criteria 接口检索出查询结果中全部对象 在映射文件里定义命名查询语句 Hibernate 同意在映射文件里定义字符串形式查询语句....Query list() 方法返回集合中包括是数组类型元素 , 每一个对象数组代表查询结果一条记录 能够在持久化类中定义一个对象构造器来包装投影查询返回记录,使程序代码能全然运用面向对象语义来訪问查询结果集...list() 方法返回集合中存放是对象数组类型 –依据配置文件来决定 Employee集合检索策略....方法集合中存放每一个元素相应查询结果一条记录, 每一个元素都是对象数组类型 假设希望 list() 方法返回集合仅包括 Department 对象, 能够在 HQL 查询语句中使用 SELECT...QBC 检索和本地 SQL 检索 QBC 查询就是通过使用 Hibernate 提供 Query By Criteria API 来查询对象,这样 API 封装了 SQL 语句动态拼装。

    98010

    Hibernate【查询详解、连接池、逆向工程】

    这里写图片描述 封装对象 前面测试了查询指定时候,返回是对象数组…可是对象数组我们不好操作啊…Hibernate还提供了将对象数组封装成对象功能 JavaBean要有对应构造函数...:连接查询返回也是对象数组!...q.setParameter(0, 10); System.out.println(q.list()); ---- Criteria 查询 Criteria是一种完全面向对象查询… Criteria...这里写图片描述 都是一些大于、小于、等于之类….Criteria查询就使用不了分组、连接查询了。...使用PowerDesigner 在设计数据库表时,我们使用PowerDesigner来生成概念模型\物理模型… 设计一个人员组织架构:有机构、部门、员工、领导、角色、权限。

    1.3K50

    Hibernate_day01总结

    第1章 Hibernate_day01总结 今日内容 Hibernate框架概述 Hibernate快速入门 Hibernate核心API介绍 Hibernate持久化类 主键生成策略 1.1...Hibernate一个ORM持久层框架 Spring一个EE开发一站式框架. 1.3 Hibernate框架概述: 1.3.1 Hibernate框架介绍: Hibernate是一个开放源代码对象关系映射框架...:Spring框架中提供持久层解决方案. 1.3.5 常见Hibernate版本: Hibernate3.x 和 Hibernate4.x 1.4 Hibernate快速入门: 1.4.1...*get方法返回是真实对象本身.load方法返回是代理对象. * get方法查询一个找不到对象时候返回null.而load方法抛出一个ObjectNotFoundException异常....核心API:Criteria Criteria criteria = session.createCriteria(Customer.class); QBC:Query By Criteria(条件).

    1.3K90

    加速你Hibernate引擎(下)

    与此同时,还可以尝试向WHERE子句中添加额外谓语来匹配其他WHERE子句。 范例7 有两个UI搜索器和一个后端守护进程搜索器来搜索名为iso_deals表。...例如,一小段数据范围可能只返回数据总量5%,而一大段数据范围可能返回数据总量90%。前者使用索引更好,而后者则最好使用全表扫描。...4.7.1覆盖抓取策略 不同用户可能会有不同数据抓取要求。Hibernate允许在两个地方定义数据抓取策略,一处是在映射元数据中,另一处是在HQL或Criteria中覆盖它。...请阅读Oracle《JDBC Developer’s Guide and Reference》中“标准批处理Oracle实现中更新计数”(Update Counts in the Oracle...4.9.4批量加载 如果你HQL或Criteria返回很多数据,那么要注意两件事: 用下列配置开启批量抓取特性: hibernate.jdbc.fetch_size 10 fetch_size设置为正值将开启

    96730

    MyBatis逆向工程代码生成以及使用详解(持续更新)

    配置命令提示符 作为具有XML配置Ant任务 作为一个Maven插件 从另一个java程序,基于XML配置 从另一个java程序,基于java配置 通过Eclipse插件 一般来说,我们会选择使用一个...:List 作用:通过特定限制条件查询信息,example用于生成一个Criteria对象来设置查询条件 例: TbItemDescExample example = new TbItemDescExample...example) 返回值:List 作用:根据特定限制条件查询,返回值包含类型为text列(默认查询并不会返回该列信息)。...example用于生成一个Criteria对象来设置查询条件,具体使用方法和方法1是一样,唯一把不同就是返回值是所有列。...——————————————————————————— 计数 计数就一个方法,根据限制条件计数,example在前面已经说过了,在这里就不叙述了。

    2.4K30

    Java-SQL注入

    每次执行sql语句,数据库都要执行sql语句编译,最好用于仅执行一次查询并返回结果情形,效率高于PreparedStatement.但存在sql注入风险。...审计方法主要是搜索createQuery()、createSQLQuery、criteria、createNativeQuery(),查看与其相关上下文,检查是否存在拼接sql。...此外,Hibernate还支持Criteria查询(Criteria Query),这种查询方式把查询条件封装为一个Criteria对象。...在实际应用中,使用SessioncreateCriteria()方法构建一个org.hibernate.Criteria实例,然后把具体查询条件通过Criteriaadd()方法加入到Criteria...4.3.1、Criteria Query常用查询限制方法 5、Hibernate修复 5.1、Hibernate参数绑定方式 参数绑定优点: (1)安全性 防止用户恶意输入条件和恶意调用存储过程

    51160

    Hibernate学习笔记1

    Hibernate常用API介绍 5.1.Configuration 5.2.sessionFactory 5.3.Session 5.4.Transaction 5.5.Query 5.6.Criteria...Query Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。...Criteria Criteria接口与Query接口非常类似,允许创建并执行面向对象标准化查询。值得注意Criteria接口也是轻量级,它不能在Session之外使用。...首先我想使用Criteria,必须得到Criteria Criteria criteria=Session.createCriteria() ?...setMaxResults() 条件查询 criteria.add(Restrictions.eq(“name”,”xxxx”)); criteria.add(Restrictions.or(Restricitons.eq

    1.4K60

    你需要Excel常用函数都在这里!

    记录所选区域中,满足特定条件单元格数值。 range 需要计算个数区域,如A2:E5 criteria条件形式为数字、表达式、单元格引用或文本,它定义了要计数单元格范围。...COUNTIFS() COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2], ...) 多条件计数。...如果所有的第二个单元格都满足其关联条件,则计数再增加 1,依此类推,直到计算完所有单元格。 criteria_range1 必需。在其中计算关联条件第一个区域。 criteria1 必需。...每一个附加区域都必须与参数 criteria_range1 具有相同行数和列数。这些区域无需彼此相邻。...criteria_range1 使用criteria1 测试区域 criteria_range1和 criteria1设置用于搜索某个区域是否符合特定条件搜索对。

    4K32

    Java 最常见 208 道面试题:第十二模块答案

    十二、Hibernate 113. 为什么要使用 hibernate? 对JDBC访问数据库代码做了封装,大大简化了数据访问层繁琐重复性代码。...Hibernate是一个基于JDBC主流持久化框架,是一个优秀ORM实现。他很大程度简化DAO层编码工作 hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。...;query.setParameter(0, "苍老师");Query.list(); QBC: Query By Criteria....(条件查询)Criteria criteria = session.createCriteria(Customer.class);criteria.add(Restrictions.eq("name",...因为Hibernate会使用代理模式在延迟关联情况下提高性能,如果你把实体类定义成final类之后,因为 Java不允许对final类进行扩展,所以Hibernate就无法再使用代理了,如此一来就限制了使用可以提升性能手段

    71530

    day29_Hibernate学习笔记_01

    hibernate.cfg.xml)--> 配置获取连接等参数 使用api测试 3.2、设计数据库和表 CREATE DATABASE day29; USER day29; CREATE TABLE...代理对象中有一个标识:是否被初始化boolean型变量,记录着是否被初始化过,确保只会初始化一次。 2、代理都是要基于接口,用load方法返回代理,就没有实现任何接口吗?...如果没有查询到就返回null,如果查询到多条就抛出异常。   setFirstResult(int); 分页,开始索引数startIndex。   ...4.7、Criteria对象(了解) QBC(query by criteria),hibernate提供纯面向对象查询语言,提供直接使用PO对象进行操作。...获得Criteria对象方式:Criteria criteria = session.createCriteria(User.class); 条件: criteria.add(Restrictions.eq

    1.1K20

    Hibernate框架

    Hibernate结构 Hibernate是一个开放源代码对象关系映射框架,,对JDBC进行了非常轻量级对象封装,所以任何可以使用JDBC地方都可以用Hibernate来替代,实现了对象与关系数据库记录映射关系...Hibernate提供接口 session 一个轻量级非线程安全对象,主要负责被持久化对象与数据操作,可以使用SessionFactory来创建一个Session,当对数据库所有操作都执行完,...SessionFactory 负责初始化Hibernate,它可以被看作是数据源代理,用来创建session对象,SessionFactory对象是线程安全,可以同时被多个线程访问。...此外,Hibernate还提供了另外一种查询方式QBC,使用方法是: 先使用session实例createCriteria()方法创建Criteria对象,接着使用工具类Restrictions方法...Criteria对象设置查询条件,同时还可以用Older工具类设置排序方式,最后用Projections工具类方法进行统计和分组,使用Criteria对象list()方法进行查询并返回结果,需要注意

    41020
    领券