Spring存储库和带有nativeQuery = false的DATA_FORMAT

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring存储库和带有nativeQuery = false的DATA_FORMAT相关的知识,希望对你有一定的参考价值。

我正在尝试做一些超级简单的事情但是使用Spring Repositories有点困难。基本上我想用DATE_FORMAT分组,例如:

 @Query("SELECT " +
             "    new users.bridge.models.dto.PerformanceDTO(sum(t.gl), sum(t.gl)) " +
             "FROM " +
             "    Transaction t " +
             "GROUP BY DATA_FORMATE(t.createdDate,'%Y-%m-%d')")

但它会引发语法错误。有没有办法用Spring存储库做到这一点?我不想使用nativeQuery = true标志,否则我不能使用这种语法

new gara.users.bridge.models.dto.PerformanceDTO(sum(t.gl), sum(t.gl))

更新:

错误是:qazxsw poi

所有java堆栈都很大但是:

enter image description here
答案

如果指定org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: asc near line 1, column 180 [SELECT new gara.users.bridge.models.dto.PerformanceDTO(sum(t.gl), sum(t.gl),t.createdDate) FROM gara.model.db.Transaction t GROUP BY DATE_FORMAT(t.createdDate,'%Y-%m-%d') asc] (默认值),则需要使用有效的JPQL。 JPQL不知道函数nativeQuery=false,但你可以使用DATE_FORMAT,它允许你调用任意SQL函数。

所以像这样的group by子句应该有效:the generic FUNCTION function

请注意,此类查询在数据库之间不可移植。

但是使用Spring Repositories有些困难。

你总是可以依靠GROUP BY FUNCTION('DATA_FORMAT', t.createdDate,'%Y-%m-%d'),这首先应该比自己实现你的存储库困难得多。

以上是关于Spring存储库和带有nativeQuery = false的DATA_FORMAT的主要内容,如果未能解决你的问题,请参考以下文章

具有几何返回类型的 Spring 数据存储库和本机查询

使用 Spring 从控制器层调用存储库和服务

Spring Boot - 不同数据库的相同存储库和相同实体

带有 OpenQuery 和参数的 NativeQuery

如何在spring数据仓库nativeQuery中使用oracle NVL函数

带有存储库和工作单元的 ASP.NET 标识