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堆栈都很大但是:
如果指定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 Boot - 不同数据库的相同存储库和相同实体