gpt4 book ai didi

java - Spring 存储库和 DATA_FORMAT 与 nativeQuery=false

转载 作者:行者123 更新时间:2023-12-02 10:21:30 29 4
gpt4 key购买 nike

我正在尝试做一些 super 简单的事情,但是使用 Spring 存储库有些事情有点困难。基本上我想使用 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))

更新:

错误是: enter image description here

所有的java堆栈都很大但是:

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] 

最佳答案

如果您指定nativeQuery=false(默认值),您需要使用有效的 JPQL。JPQL 不识别函数 DATE_FORMAT,但您可以使用 the generic FUNCTION function它允许您调用任意 SQL 函数。

因此,像这样的 group by 子句应该有效:GROUP BY FUNCTION('DATA_FORMAT', t.createdDate,'%Y-%m-%d')

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

but with Spring Repositories somethings is a bit hard.

您随时可以依靠custom method implementations这应该不会比一开始自己实现存储库困难多少。

关于java - Spring 存储库和 DATA_FORMAT 与 nativeQuery=false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54321264/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com