如何在 JPQL 中将日期时间转换为日期?

2024-02-27

这段代码有什么问题?

@Query(value = "Select " +
    "date(ivd.trnDatetime) as date, " +
    "ivd.binNo as bin, " +
    "ivd.snNo as sn, " +
    "count(ivd.invoiceNo) as totInvoice, " +
    "sum(ivd.totSaleAmt) as totSaleAmt " +
    "from InvoiceData ivd where ivd.status = 1 group by date(ivd.trnDatetime), ivd.binNo, ivd.snNo")
List<Object[]> getDailyTransactionReport();

它抛出

    java.lang.IllegalArgumentException: org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode 
 +-[METHOD_CALL] MethodNode: '('
 |  +-[METHOD_NAME] IdentNode: 'date' {originalText=date}
 |  \-[EXPR_LIST] SqlNode: 'exprList'
 |     \-[DOT] DotNode: 'invoicedat0_.transaction_at' {propertyName=trnDatetime,dereferenceType=PRIMITIVE,getPropertyPath=trnDatetime,path=ivd.trnDatetime,tableAlias=invoicedat0_,className=com.efdms.transactionmonitoring.domain.InvoiceData,classAlias=ivd}
 |        +-[ALIAS_REF] IdentNode: 'invoicedat0_.id' {alias=ivd, className=com.efdms.transactionmonitoring.domain.InvoiceData, tableAlias=invoicedat0_}
 |        \-[IDENT] IdentNode: 'trnDatetime' {originalText=trnDatetime}
 [Select date(ivd.trnDatetime) as date, ivd.binNo as bin, ivd.snNo as sn, count(ivd.invoiceNo) as totInvoice, sum(ivd.totSaleAmt) as totSaleAmt from com.efdms.transactionmonitoring.domain.InvoiceData ivd where ivd.status = 1 group by date(ivd.trnDatetime), ivd.binNo, ivd.snNo]
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138)
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
    at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:729)
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:23)
    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:498)
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:351)
    at com.sun.proxy.$Proxy190.createQuery(Unknown Source)
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:87)
    ... 62 common frames omitted

该物业为trnDatetime在实体中

@NotNull
@Column(name = "transaction_at", nullable = false)
private Instant trnDatetime;

Sql Server 中的等效列是datetime


JPQL不支持date()因此您的查询失败。您有以下选项:

  1. 通过设置更改为使用本机 SQLnativeQuery=true in @Query
  2. 如果您使用 Hibernate ,请使用 HQL 特定的cast() https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#hql-functions那个演员trnDatetime to LocalDate :
select cast(ivd.trnDatetime as LocalDate) as date ,
       count(ivd.invoiceNo) as totInvoice 
       from InvoiceData ivd 
       where ivd.status = 1 
       group by cast(ivd.trnDatetime as LocalDate)"

I ignore other columns for the sake of brevity

请注意,结果列表中每一项的索引 0 都是一个LocalDate

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JPQL 中将日期时间转换为日期? 的相关文章

随机推荐

  • jQuery 解析/显示来自 php json_encode 的 json 数据

    jquery 中的初始 ajax 调用 ajax type post url items data php data id id dataType json success function data if data make item r
  • 我怎样才能拥有一个同时包含图像和文本的 UIBarButtonItem?

    当我尝试对 UIBarButtonItem 使用图像时 不显示文本 有没有办法同时显示文字和图像 您可以使用具有图像和文本的自定义视图来初始化 UIBarButtonItem 这是一个使用 UIButton 的示例 UIImage chat
  • 在 Angular 中向 ckeditor 添加简单的上传适配器

    我确实通过安装在我的角度项目中启动了经典的ckeditor npm install save ckeditor ckeditor5 angular npm install save ckeditor ckeditor5 build clas
  • 使用 Python(加密)生成 CSR

    我有一个可以工作的骨架 但我有点坚持以下几点 我没有找到使用加密库处理 SAN subjectAltName 的方法 希望我在术语上没有错误 但如果我说 一个主要主机名 test test edu 然后又希望该主机也为 Pushu edu
  • Scala 中两个集合的并集

    从链接的问题来看here https stackoverflow com questions 6963792 scala functional set problem 我在 Scala 中找到了 Union 的实现 def union a
  • 获取合适的VS2017实例进行自主开发扩展

    我正在开发一个 Visual Studio 扩展 以使用从代码窗口中的右键单击上下文菜单调用的自定义命令来替换当前活动 cs 文件中的文本 到目前为止 访问文档是有效的 但如果我启动多个 VS2017 实例 那么我希望在新实例中完成的更改将
  • 在应用程序购买中添加二进制文件

    我已提交新版本的应用程序和新的应用程序购买 苹果有强调新版本的应用程序 但不接受应用程序内购买 应用内购买 新商业模式 我们已开始审核您的应用内购买 但无法继续 因为您提交的应用内购买表明您的应用的业务模式发生了变化 因此 我们需要验证您提
  • 是否有可用于在浮点表示形式之间进行转换的 C++ 库?

    我最近需要解释 DEC 32 位浮点表示 它与 IEEE 浮点表示法的不同之处在于分配给指数和尾数的位数 以下是一堆浮点格式的描述 http www quadibloc com comp cp0201 htm http www quadib
  • docker nginx ERR_NAME_NOT_RESOLVED

    运行 4 个 docker 容器 服务器 客户端 nginx mongo 反向代理 客户端似乎在端口 4200 上工作 我可以看到我的应用程序和路由工作 当尝试注册用户时 我请求将以下 httpclient 发布到名为 myserver 的
  • Excel VBA 宏用于跟踪单独工作表中的更改

    我正在尝试编写一个 VBA 宏来跟踪对单独工作表中工作簿的更改 如果您手动执行此操作 命令顺序为 工具 gt 跟踪更改 gt 突出显示更改 并选择 单独工作表 选项 您必须执行该命令的两次迭代 一次是激活内联跟踪 第二次是将跟踪移动到单独的
  • android:singleLine 的 TextView 不再处于“已弃用”状态?

    我面临 android ellipsize 在 TextView 中不起作用的问题 但要在 android singleLine 上正常工作 我听说 android singleLine 已 弃用 但 Android Developer 的
  • 系统 IO 异常:进程无法访问该文件,因为该文件正在被另一个进程使用 c#

    我已经看到了关于这个问题的几篇文章 我已经实现了所有建议 例如在流写入器和连接对象上使用flush close 方法 使用GC Collect 强制清理 使用using 自动处置 我正在从数据库进行简单的获取操作并写入文本文件 这是我的代码
  • 使用Javascript将所有span标签更改为label标签?

    我想做的 调用卸载函数来更改 span some content span into
  • Rascal 中的布局

    当我导入 Lisra 配方时 import demo lang Lisra Syntax 这将创建语法 layout Whitespace t n r lexical IntegerLiteral 0 9 gt gt 0 9 lexical
  • 使用 GetProcAddress 从 C++ 调用 Delphi DLL:回调函数因参数无效而失败

    我有一个第三方 Delphi DLL 我从 C 调用它 不幸的是 我无法访问 Pascal DLL 代码 并且我不是 Pascal 程序员 没有lib文件 所以我使用GetProcAddress调用许多DLL函数 成功地按值 地址和引用传递
  • WCF 和 HTTP GET

    我的WCF服务公开了这个函数 public SerialNumberInfo GetSerialNumberInfo string serialNumber 有没有办法在我的 WCF 服务上启用 HTTP GET 例子 http local
  • 动态链接和 Python SWIG (C++) 在 C++ 中工作在 python 中失败

    我有一个库 我使用 SWIG 创建了一个 python 包装器 该库本身接受用户提供的函数 这些函数位于动态链接的 so 文件中 目前 我正在处理我自己创建的一个 并设法在 C 中使动态链接正常工作 当我尝试在 python 中运行它时 出
  • Ember.js 路由器入门

    我想在下一个项目中学习使用 Ember js 到目前为止我已经阅读了文档here http emberjs com documentation 但我没有看到有关路由器的解释 然后我读了指南here http emberjs com guid
  • 查找图像中一条线上的像素坐标

    我有一个表示为二维数组的图像 我想获取从点 1 到点 2 的直线上的像素坐标 例如 假设我有一张尺寸为 5x4 的图像 如下图所示 我有一条从坐标点 1 开始的线 0 2 到点 2 4 1 就像下图中的红线一样 所以在这里我想将蓝色像素的坐
  • 如何在 JPQL 中将日期时间转换为日期?

    这段代码有什么问题 Query value Select date ivd trnDatetime as date ivd binNo as bin ivd snNo as sn count ivd invoiceNo as totInvo