【问题标题】:JPQL Query between dates using Calendar使用日历的日期之间的 JPQL 查询
【发布时间】:2018-09-24 17:36:47
【问题描述】:

我在查询以提取一天中的所有数据时遇到问题。

这是我的日历对象:

2018-04-13T00:00:00.000Z//Fri Apr 13 23:59:59 CEST 2018
2018-04-15T00:00:00.000Z//Sun Apr 15 00:00:00 CEST 2018

这是我的命名查询:

select count(u) from EntityPoll u where pollId = :pollId and FUNCTION('TRUNC', u.requestDate) > :startDate and FUNCTION('TRUNC', u.requestDate) < :endDate

这是我的hibernate生成的sql(返回0个元素)

select count(entitypoll0_.ID) as col_0_0_ from NEOL_ES_POLL entitypoll0_ 
where entitypoll0_.POLL_ID=? 
and trunc(entitypoll0_.REQUEST_DATE)>? 
and trunc(entitypoll0_.REQUEST_DATE)<?

这是相同的查询,但在 SQL Developer 中执行(5 个结果,ok)

select count(entitypoll0_.ID) as col_0_0_ from NEOL_ES_POLL entitypoll0_
where entitypoll0_.POLL_ID=1500541052868 
and trunc(entitypoll0_.REQUEST_DATE) > TO_DATE('2018-04-13','yyyy-MM-dd') 
and trunc(entitypoll0_.REQUEST_DATE) < TO_DATE('2018-04-15','yyyy-MM-dd');

无论如何,最后一个查询有 2 个 to_Date 对象替换了我的日历对象,但我找不到结果的差异。

我的道:

Query q = createNamedQuery(EntityPoll.SELECT_BY_POLLID);
        q.setParameter("pollId", pollId);
        q.setParameter("startDate", startDate, TemporalType.DATE);
        q.setParameter("endDate", endDate, TemporalType.DATE);
        try {
            return ((Long) q.getSingleResult()).intValue();

这是我的数据表:

2141777690  1500541052868   14/04/18
2141777750  1500541052868   14/04/18
2141777810  1500541052868   14/04/18
2141777870  1500541052868   14/04/18
2141777930  1500541052868   14/04/18
2141778470  1500541052868   13/04/18
2141778590  1500541052868   13/04/18
2141778980  1500541052868   13/04/18
2141779010  1500541052868   13/04/18
2141779100  1500541052868   13/04/18

【问题讨论】:

    标签: java oracle jpa calendar jpql


    【解决方案1】:

    好吧,可能是错的,但是,你的代码中的一件事让我一直在思考。当您在 oracle 中设置参数并传递 to_date 时,而不是在传递 to_date(?, 'dd-mm-yyyy') 之类的参数时。这里的第一个参数是字符串。至于差异,我不喜欢你的做法。谢谢

    【讨论】:

      猜你喜欢
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      相关资源
      最近更新 更多