【发布时间】:2018-10-11 12:59:56
【问题描述】:
DateAdd 函数作为 sql-server 中的 sql 查询工作正常,因为我想从日期中减去一些天数并且我得到了结果,但是当我在 jpa 项目中使用相同的时候,spring boot 项目还没有开始。
在存储库类下面,如果我注释掉下面的代码行,spring boot 项目将按预期启动。
public interface domainRepository extends CrudRepository<domainTable , Long> {
@Query("Select DATEADD(day,-(1), d.date) from domainTable d "
+ "where d.id in (:id)")
public Date getDate(@Param("id") Long id);
}
如何解决这个问题?还是我必须编写一个单独的函数而不是 DATEADD?
【问题讨论】:
-
“否则”什么?发出威胁并不是真正激励人们的方式。 JPA 规范是公开的,所有 JPA 文档都会告诉您“DATEADD”在 JPQL 中无效(尽管它在 SQL 中有效)。那些相同的 JPA 文档会告诉您一个
FUNCTION函数,它允许您调用任何 SQL 函数。为什么不读一点?或者为什么不在 JAVA 中添加日期?! -
@DN1,我认为您需要放松一下,这很可能只是英语水平不佳。除此之外,我同意在 java 中做日期数学。
-
首先感谢您回复我。我真的需要一些帮助。我可以使用日历进行日期加/减,但我更喜欢在 jpql 本身中进行并返回日期。请建议我如何做到这一点。
-
第一响应者已经告诉你该怎么做......查找 JPQL
FUNCTION。 Stackoverflow 上也有很多关于它的帖子,人们认为 JPA 接受了 SQL。 stackoverflow.com/questions/30937839/… -
@DN1 请给我建议
标签: sql spring-boot jpa jpql dateadd