【问题标题】:Using Mysql function in java spring bootjava spring boot中使用Mysql函数
【发布时间】:2018-07-10 10:10:34
【问题描述】:

我的存储库中的自定义查询有点问题:

@Query("select v from Visit v where YEARWEEK('date') = YEARWEEK(curdate())")

在 YEARWEEK('date') 左括号之前显示错误:

<expression>, <operator>, AND, GROUP, HAVING, IS, OR or ORDER expected, got '('

【问题讨论】:

  • 另外SELECT v FROM Visit v 看起来模棱两可或错字。也许SELECT v.* FROM Visit v'date' 周围的引号通常代表字符串,你的意思是反引号`?
  • Spring Data 使用 JPQL,而不是 SQL(除非您明确指定)-en.wikipedia.org/wiki/Java_Persistence_Query_Language

标签: java mysql sql spring-boot


【解决方案1】:

你有两个选择:

对于 HQL,您需要以下内容:

@Query("select * from Visit v where YEARWEEK('v.date') = YEARWEEK(curdate())")

你也可以有本地查询,在这种情况下你需要关注(不是 Spring 应用程序的最佳方式,但可以用于某些情况)

@Query(value = "select * from Visit where YEARWEEK('date') = YEARWEEK(curdate())", nativeQuery = true)

【讨论】:

  • 非常感谢 :) 已解决。
【解决方案2】:

@Query 注解允许通过将 nativeQuery 标志设置为 true 来执行本机查询。

@Query("select v from Visit v where YEARWEEK('date') = YEARWEEK(curdate())", nativeQuery = true)

请参阅 spring-data 文档 Using @Query section

【讨论】:

  • 非常感谢 :) 已解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 2016-12-15
  • 2021-06-01
  • 2020-08-08
  • 1970-01-01
  • 2017-05-28
相关资源
最近更新 更多