我想获取动态生成的HQL查询的结果计数,而无需实际获取结果列表。说我的查询是这样的:
select Company company LEFT OUTER JOIN FETCH products product
我在Hibernate文档中看到:
您可以计算查询结果的数量而无需返回它们:
( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()
我怀疑应该用查询替换 .... ,但这不起作用,因为HQL不支持FROM中的子选择。
那么,我应该如何计算动态生成的HQL查询的结果?我认为通过执行它并获取结果列表的.size()可能是不必要的开销。
干杯!
更新:
我使用此正则表达式转换查询:
Number num = (Number) em.createQuery(dynamicQuery.replaceAll("select \\w+ from ", "select count(*) from ")).getSingleResult();
我得到这个:
块引用
EJB异常:嵌套的异常是:java.lang.IllegalArgumentException:org.hibernate.QueryException:查询指定的联接获取,但是选择列表中不存在所获取的关联的所有者[FromElement
{显式,不是集合联接,获取联接,非获取-懒惰的属性,classAlias =产品,role =
org.myCompany.applicant.entity.Applicant.products,tableName =
PRS_DEV.PRODUCT,tableAlias = products1_,origin = PRS_DEV.APPLICANT申请人0_,列=
{applicant0_.APPLICANT_ID,className = org。
myCompany.product.entity.Product}}] [
从org.myCompany.applicant.entity.Applicant申请人LEFT OUTER JOIN
FETCH申请人.products产品中 选择count( ) ];
嵌套的异常是:java.lang.IllegalArgumentException:org.hibernate.QueryException:查询指定的联接获取,但是选择列表中不存在所获取的关联的所有者[FromElement
{显式,不是集合联接,获取联接,非获取-懒惰的属性,classAlias =产品,role =
org.myCompany.applicant.entity.Applicant.products,tableName =
PRS_DEV.PRODUCT,tableAlias = products1_,origin = PRS_DEV.APPLICANT申请人0_,列=
{applicant0_.APPLICANT_ID,className = org。
myCompany.product.entity.Product}}]
[从org.myCompany.applicant.entity.Applicant申请人LEFT OUTER JOIN
FETCH申请人.products产品中选择count()]
这应该可以解决问题:
select count(*) FROM Company c JOIN ...
没有涉及子选择,只是返回而不是返回Company
,而是返回计数。
编辑: 该FETCH
是地方出来了。您不是从查询中返回实体,而是仅返回计数,因此,Hibernate抱怨。删除它应该可以帮助:
select count(product) from org.myCompany.applicant.entity.Applicant applicant
LEFT OUTER JOIN applicant.products product
我想从一个MariaDB数据库获取数据,并通过Maven安装了MariaDB JDBC连接器。下面的代码将数据的参数而不是实际的行/单元格数据添加到组合框中(请参见代码段,第10行)。这就是我要解决的问题。如果重要的话,我的表由1个int和4个varchar组成。 代码段(带行计数):
我正在尝试用Akka / Scala编写一个actor,调用HTTP REST API并将结果发送回调用actor。API 可能会返回结果的集合/向量,必须首先将其转换为内部供应商中性格式,以便将来可以更改供应商,而无需对代码进行太多更改。大多数代码都在工作,但我不知道如何解压缩并发送内部向量。 这是我拥有的代码,它向调用的Actor返回一个。我想返回的是最终操作中创建的实际向量: 主叫演员: 如
我们正在使用youtube v3搜索API。我们在“totalResults”计数和 response.items 字段中返回的项目列表中不匹配。我在请求中请求了 50 个视频。返回的响应显示总结果计数为 65,但响应负载只有 3 个视频。 API:www.googleapis.com/youtube/v3/search/list 请求有效载荷 响应有效载荷
我有两个活动类和一个非活动类,它们从构造函数中传递的上下文调用startActivityForResult()。它看起来是这样的:FirstActivity- 不活跃 第二活动 第一活动
问题内容: 我正在尝试创建一种方法,从中可以查询数据库并检索整个表。 目前,如果我使用这些数据只是正常工作 中 的方法。但是,我希望该方法返回结果。 我正在了解当前代码。 我该如何实现? 问题答案: 您永远不要通过公共方法来回避。这很容易导致资源泄漏,因为您不得不保持语句和连接打开。关闭它们将隐式关闭结果集。但是,将它们保持打开状态将导致它们悬而未决,并且当它们打开过多时,将导致数据库用尽资源。
我想创建一个日历对象,并将其设置为某一年和该年中的一周。 当我将calendar对象传递给setWeekChecked方法时,这是它的toString: java.util.gregoriancalendar[time=?,arefieldsset=false,lenient=true,zone=America/New_York,firstDayofWeek=1,minimalDaysinfirs