【问题标题】:Hibernate criteria get all rows where currentDate > startDate and < endDate休眠条件获取 currentDate > startDate 和 < endDate 的所有行
【发布时间】:2017-01-17 10:50:41
【问题描述】:

我需要获取当前日期包含 beetwen dateStart 和 dateAnd 的所有行。

如果当前日期 - 2017 年 1 月 17 日并且

id  dateStart     dateEnd
0   01 JAN 2017   18 JAN 2017
1   01 JAN 2017   16 JAN 2017
2   18 JAN 2017   03 FEB 2017
4   17 JAN 2017   16 JAN 2017

我需要在表中获取 2 行 ID 为 0 和 4 的行

@Override
    public List<Raffle> findCurrentRaffle() {
        Criteria criteria = getSession().createCriteria(Raffle.class);
        criteria.add(Restrictions.ge("dateStart",  new Date()));
        criteria.add(Restrictions.le("dateEnd", new Date()));
        return criteria.list();
    }

返回 0 行

private Long id;
    @Column(name = "dateStart")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateStart;
    @Column(name = "dateEnd")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateEnd;

【问题讨论】:

  • new Date() 不应调用两次,它们将具有不同的值。只是一般性评论,它不会回答问题。
  • 能否请您展示抽奖类并说明 dateStart 和 dateEnd 列类型是什么?
  • 您到底在寻找什么?

标签: java hibernate date criteria


【解决方案1】:

在你的条件下你有dateStart &gt;= currentDate and dateEnd &lt;= currentDate

要解决问题,只需将条件更改为dateStart &lt;= currentDate and dateEnd &gt;= currentDate

criteria.add(Restrictions.le("dateStart",  new Date()));
criteria.add(Restrictions.ge("dateEnd", new Date()));

【讨论】:

    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    相关资源
    最近更新 更多