我正在尝试做一些超级简单的事情,但是使用 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))更新:错误是:所有的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]
1 回答
SMILET
TA贡献1796条经验 获得超4个赞
如果您指定nativeQuery=false(默认),您需要使用有效的 JPQL。JPQL 不知道该函数DATE_FORMAT,但您可以使用通用FUNCTION函数,该函数允许您调用任意 SQL 函数。
所以像这样的 group by 子句应该可以工作:GROUP BY FUNCTION('DATA_FORMAT', t.createdDate,'%Y-%m-%d')
请注意,此类查询不能在数据库之间移植。
但是使用 Spring Repositories 有点困难。
您总是可以依靠自定义方法实现,这不应该比首先自己实现存储库更难。
添加回答
举报
0/150
提交
取消
