为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

扬帆大鱼 2022-05-21 13:28:39
我正在尝试做一些超级简单的事情,但是使用 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 有点困难。

您总是可以依靠自定义方法实现,这不应该比首先自己实现存储库更难。


查看完整回答
反对 回复 2022-05-21
  • 1 回答
  • 0 关注
  • 394 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号