如何使用JPQL忽略日期查询中的时间?

时间:2013-03-12 00:17:37

标签: java jpa jpql

我在使用Date(并忽略Time)对JPQL进行查询时遇到问题。这是我的方法:

@Override
public List<Event> findByDayAndStatus(User usr, Date d, char status) {
    Query q = em.createQuery("SELECT e FROM Event as e where " +
                             "e.idusr=:usr AND e.datestart=:d AND " + 
                             "e.status=:status", Event.class);            
    q.setParameter("usr", usr);
    q.setParameter("datestart", d, TemporalType.DATE);
    q.setParameter("status", status);
    return q.getResultList();
}

问题是我得到一个空列表,当我在查询中省略date参数时,我得到了我的数据。

我认为这是日期问题,因为我查询的方式是2013-03-20 00:00:00,数据库日期就像2013-03-20 12:00:00。

1 个答案:

答案 0 :(得分:0)

将查询修改为
SELECT e FROM Event as e其中e.idusr =:usr AND cast(e.datestart as date)=:d AND e.status =:status 它会跳过您指定日期的时间,只返回日期。