社区首页 >问答首页 >返回最大值的QueryDSL

返回最大值的QueryDSL
EN

Stack Overflow用户
提问于 2015-12-10 12:08:08
回答 3查看 15K关注 0票数 5

我想使用QueryDSL返回最大值。

通过这个查询,我返回了eventid等于id的时间间隔,并且它工作正常。

代码语言:javascript
代码运行次数:0
复制
QInterval interval = QInterval.interval;
JPAQuery query = new JPAQuery(em); 

BooleanExpression checkId = interval.event.eventid.eq(id);

Interval interv = query.from(interval).where(checkId).uniqueResult(interval);

但是如果我做同样的事情并添加这个谓词,我会得到一个错误(我想返回具有最大时间戳的类End的间隔和对象:

代码语言:javascript
代码运行次数:0
复制
BooleanExpression getMax = interval.end.timestamp.eq(interval.end.timestamp.max());

Interval interv = query.from(interval).where(getMax).uniqueResult(interval);

我认为这个问题可能与interval.end.timestamp.max()有关,因为它是一个DateTimeExpression。

错误为Caused by: java.sql.SQLException: Invalid use of group function

代码语言:javascript
代码运行次数:0
复制
org.springframework.orm.jpa.JpaSystemException: could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:314)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:225)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417)
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:131)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
    at com.sun.proxy.$Proxy67.getLastInterval(Unknown Source)
    at es.citic.cms.test.dao.AdquisitionDaoTest.testEventPackageDao1(AdquisitionDaoTest.java:105)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:254)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:193)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: org.hibernate.exception.GenericJDBCException: could not extract ResultSet
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:91)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:2066)
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1863)
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1839)
    at org.hibernate.loader.Loader.doQuery(Loader.java:910)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355)
    at org.hibernate.loader.Loader.doList(Loader.java:2554)
    at org.hibernate.loader.Loader.doList(Loader.java:2540)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370)
    at org.hibernate.loader.Loader.list(Loader.java:2365)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:497)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387)
    at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236)
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300)
    at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103)
    at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:573)
    at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:495)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:364)
    at com.sun.proxy.$Proxy86.getSingleResult(Unknown Source)
    at com.mysema.query.jpa.impl.AbstractJPAQuery.getSingleResult(AbstractJPAQuery.java:217)
    at com.mysema.query.jpa.impl.AbstractJPAQuery.uniqueResult(AbstractJPAQuery.java:309)
    at com.mysema.query.jpa.impl.AbstractJPAQuery.uniqueResult(AbstractJPAQuery.java:301)
    at es.citic.cms.model.dao.acq.IntervalRepoImpl.getLastInterval(IntervalRepoImpl.java:43)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:483)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:458)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:440)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
    ... 37 more
Caused by: java.sql.SQLException: Invalid use of group function
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3870)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3806)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2470)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2617)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2550)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1962)
    at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:83)
    at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:83)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82)
    ... 78 more
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-10 15:50:02

您可以按照QueryDsl 4.0.6文档中的描述执行子查询。

查看此QueryDsl documentation link,其中包含使用max()函数的查询示例:

代码语言:javascript
代码运行次数:0
复制
QDepartment department = QDepartment.department;
QDepartment d = new QDepartment("d");
queryFactory.selectFrom(department)
    .where(department.size.eq(
        JPAExpressions.select(d.size.max()).from(d)))
     .fetch();
票数 6
EN

Stack Overflow用户

发布于 2016-08-29 08:44:24

我不能让QueryDslPredicateExecutor选择最大值,我必须直接使用JpaQuery (QueryDSL 3.2.x)

代码语言:javascript
代码运行次数:0
复制
 JPAQuery query = new JPAQuery(entityManager);
 query.from(qEntity).singleResult(qEntity.id.max());
票数 2
EN

Stack Overflow用户

发布于 2018-11-21 12:44:53

我想买一件价值最高的东西。所以它看起来有点像你的问题。既然我已经找到了这个答案,那么发布我的答案可能会对某些人有所帮助。

在SQL中,我会按降序排序,并首先选择。这里有一些对你有用的东西:

代码语言:javascript
代码运行次数:0
复制
query.from(interval).orderBy(interval.end.desc()).fetchFirst();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34201522

复制
相关文章
python安装的库在pycharm不显示_pycharm上无法安装各种库
在使用pycharm安装库总是出现安装不成功的提示 ‘Non-zero exit code (2)’
全栈程序员站长
2022/09/28
2.7K0
python安装的库在pycharm不显示_pycharm上无法安装各种库
pycharm安装后运行不了_pycharm上无法安装各种库
参考博客链接:http://blog.csdn.net/qingyuanluofeng/article/details/46501427
全栈程序员站长
2022/09/26
1.6K0
pycharm安装后运行不了_pycharm上无法安装各种库
【pycharm】解决pycharm无法在settings里安装库的问题
本来想直接在pycharm的setting里安装库,但是安装的时候一直转圈圈,要么是太慢要么显示失败。发现用命令行可以解决这个问题。 具体操作如下: 打开命令行,输入下面语句(确保路径一致)。
全栈程序员站长
2022/09/25
1.6K0
【pycharm】解决pycharm无法在settings里安装库的问题
Rasa 聊天机器人专栏(八):在Docker上运行Rasa
这是如何使用Docker构建Rasa助手的指南。如果你之前没有使用过Rasa,我们建议你先Rasa教程开始。
磐创AI
2020/03/04
5.7K0
Pycharm安装jupyter notebook无法在SciView查看变量
Pycharm执行jupyter项目时,会提醒笔记本内核与项目内核不匹配,如下图:
全栈程序员站长
2022/09/27
1.6K0
Pycharm安装jupyter notebook无法在SciView查看变量
pycharm双击但是无法打开的情况_mac电脑上pycharm怎么安装
本来pycharm 用的好好地,电脑重启之后,突然就打不开了,双击没反应,重新安装也解决不了,百度找不到结果,就去google了。
全栈程序员站长
2022/09/25
1.9K0
pycharm双击但是无法打开的情况_mac电脑上pycharm怎么安装
​在tinycolinux上安装和使用cloudwall
本文关键字:在tinycolinux上安装和使用cloudwall,同步器as webos,uniform native web appstack
minlearn
2020/09/28
7800
在 Linux 上安装和使用 Docker
由于 Ubuntu Server 16.04 缺少图形界面,我会完全通过命令行来安装和使用 Docker。在你安装前,你需要更新 apt 然后进行必要的升级。一定要注意,若系统内核升级了,你会需要重启系统。因此最好挑个服务器能重启的时间进行。
用户8989785
2021/09/10
1.9K0
在OSX上安装和使用ROS
参考链接:https://github.com/mikepurvis/ros-install-osx
zhangrelay
2022/04/29
9710
在OSX上安装和使用ROS
在 Linux 上安装和使用 Docker
Docker 使得创建、部署,和管理容器变得特别简单。更好的是,安装和使用 Docker 在 Linux 平台上特别的方便。
用户4988085
2021/09/14
1.7K0
在 Windows 系统上安装和使用 Fluentd
我们在最初的文章中介绍了在 Linux 上安装 Fluentd 的方法,有时候为了做些简单测试,并不需要在服务器上运行 Fluentd。在自己电脑上装一个Fluentd 就可以实现。
Fluentd中文网
2021/02/05
3K0
在anaconda中安装pycharm_anaconda和pycharm关联
经历了装软件的头疼阶段后,终于搞明白Anaconda,python,Pycharm之间的关系及各种python包的安装了
全栈程序员站长
2022/09/27
1.9K0
在anaconda中安装pycharm_anaconda和pycharm关联
Pycharm安装、激活和使用教程
Pycharm是一款出色的IDE,以前写PHP代码的时候使用的PHPstrom,也是一款出色的编辑器工具,都是由JetBrains出品,pycharm提供调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等功能,方便编程人员完成高效的代码开发工作。
申霖
2020/02/14
1.8K0
Pycharm安装、激活和使用教程
Rasa 使用ResponseSelector实现FAQ和闲聊
learn from https://github.com/Chinese-NLP-book/rasa_chinese_book_code
Michael阿明
2022/12/01
8780
Rasa 使用ResponseSelector实现FAQ和闲聊
在腾讯云上安装和使用 JuiceFS 存储
JuiceFS 是一个云原生的企业级开源共享文件系统,广泛应用于大数据、企业级数据共享、Kubernetes 容器编排、AI 机器学习、Web 服务和内容管理、数据容灾备份等场景。它将对象存储作为大容量本地磁盘使用,为云上应用提供近乎无限的存储空间。与此同时,得益于其独特的技术架构,在存储和处理大规模数据时,性能通常高于本地存储。
谈笑有Herald
2021/08/02
3.8K0
在腾讯云上安装和使用 JuiceFS 存储
gcc在Ubuntu上安装和使用「建议收藏」
使用命令sudo apt install build-essential,该命令将安装一堆新包,包括gcc,g ++和make。 要验证GCC编译器是否已成功安装,可以使用gcc -v命令打印GCC版本:
全栈程序员站长
2022/09/15
1.4K0
gcc在Ubuntu上安装和使用「建议收藏」
小白教程——安装和使用PyCharm
0.0 前言 上一个推送,我教大家怎么安装Python 3.X,安装完了,那我们肯定就是要用IDE (Integrated Development Environment)了,说白了,IDE就是集
伪君子
2018/04/04
3K0
小白教程——安装和使用PyCharm
在Windows 10上安装TensorFlow及PyCharm开发环境[通俗易懂]
有时候在查看官方文档时,常常看到很多的分支,所以作为开发者我们都喜欢把最佳实践总结出来。下面一起来看看如何在Windows 10上安装一个TensorFlow和PyCharm开发环境。
全栈程序员站长
2022/09/27
1.6K0
在Windows 10上安装TensorFlow及PyCharm开发环境[通俗易懂]
点击加载更多

相似问题

Hibernate搜索,Infinispan,jgroup,野生蝇集群集成配置

14

Kubernetes群集内的子网划分

116

Jgroup群集在重新启动单个集群成员时中断。

11

跨不同子网的arp

13

如何在旧的jgroup版本中更改JGroups群集协调器

12
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文