提问人:Stephan 提问时间:8/12/2020 最后编辑:Adrian KlaverStephan 更新时间:8/12/2020 访问量:2048
JPQL 查询中的date_trunc函数
date_trunc function in jpql query
问:
我真的被 JPQL 中的date_trunc功能困住了。
我的问题是:
@Query("SELECT c.name AS name, SUM(c.salary) AS salary FROM SalaryTable AS c GROUP BY c.name, date_trunc('year' c.savedtimestamp)")
我得到异常:
具有不用逗号分隔的“date_trunc”和“('year' c.savedtimestamp)'。\n[197, 203] 标识变量”year''未遵循 Java 标识符的规则。“,”\tat org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildException(HermesParser.java:157)“,”\tat org.eclipse.persistence.internal.jpa.jpql.HermesParser.validate(HermesParser.java:336)“,”\tat org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:280)“,”\tat
你能在这方面帮我吗?
问候 斯蒂芬
答:
1赞
Adrian Klaver
8/12/2020
#1
应该是:
date_trunc('year', c.savedtimestamp)
请注意“,”根据错误消息”
has 'date_trunc' and '('year' c.savedtimestamp)' that are not separated by a comma
评论
0赞
Stephan
8/12/2020
非常感谢您的快速回复。我放置了逗号',' 我仍然有以下异常: java.lang.IllegalArgumentException: 在 EntityManager 中创建查询时发生异常: \n异常描述: 语法错误解析 [SELECT c.name AS name, SUM(c.salary) AS salary FROM SalaryTable AS c GROUP BY c.name, date_trunc('year', c.savedtimestamp)]。\n[195, 196] ......具有未用逗号分隔的 'date_trunc' 和 '('year', c.savedtimestamp)。\n[197, 203] 标识变量 ''year'' 未遵循 Java 标识符的规则。“,”\tat org.eclipse.persistenc –
0赞
Stephan
8/12/2020
对不起,我复制了之前的跟踪.....但现在我复制了更正的一个......仍然发生异常
0赞
Adrian Klaver
8/12/2020
嗯,它看起来像是想要的,用逗号分隔。这没有意义,除非它与以下方面有关: .您可能想尝试在查询中使用“year”。date_trunc
('year', c.savedtimestamp)
identification variable ''year'' is not following the rules for a Java identifier
0赞
Stephan
8/12/2020
你能详细说明你的想法吗?对不起,我不是JPA方面的专家。
0赞
Adrian Klaver
8/12/2020
我也不是(:我最初认为这是由于“year”和 c.savedtimestamp 之间没有 ',' 的明显语法错误。这似乎与使用有关。我的建议是试图逃避 .您也可以尝试 .这些只是基于我在其他情况下使用的逃逸策略的猜测。您可能需要在 Spring-boot 论坛上询问更好的解决方案。'year'
''year''
\'year\'
下一个:JPA 查询中的超时
评论