【问题标题】:how to set parameter into native query between single quotation in java hibernate?java - 如何在java hibernate中的单引号之间将参数设置为本机查询?
【发布时间】:2019-01-27 06:34:58
【问题描述】:

以下是解释我的问题的简单示例

Query(name = "select p.* , pr.actual_date_time , count(*) " +
"from player p  " +
"inner join app.player_reports pr ON pr.player_id = p.id " +
"where pr.actual_date_time between  now() - interval '?1 day' 
   and now() - interval '0 day' " ,nativeQuery = true)
List<PlayerEntity> findCheaters(@param("NumberDays") int number )

这是我的查询,我想将“NumberDays”放在单引号之间并用“?1”替换。

我很乐意帮助我,谢谢你

【问题讨论】:

  • 我相信你不能在interval中使用参数。
  • 你知道怎么做这个查询吗?
  • 您需要使用一个接受纯数字参数的日期函数。然后,我们可以让它工作。
  • 得到它会尝试这种方式来修复它

标签: java postgresql hibernate spring-boot


【解决方案1】:

您不能参数化区间常数的值,但您可以简单地将基本单位乘以一个参数:

pr.actual_date_time between  now() - (interval '1 day' * ?) and now()

然后将您想要的天数作为整数传递给 PreparedStatement。


注意- interval '0 day'是没用的

【讨论】:

  • 所以我应该向查询传递一个字符串?
  • 不,整数:天数。
猜你喜欢
  • 2021-08-06
  • 2022-01-07
  • 2012-08-16
  • 2015-08-01
  • 1970-01-01
  • 2013-09-13
  • 2010-10-08
  • 2014-02-11
  • 1970-01-01
相关资源
最近更新 更多