2013-03-12 79 views
0

我在使用日期(并忽略时间)对JPQL执行查询时遇到问题。这是我的方法:如何使用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(); 
} 

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

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

+0

你想要哪种数据,只需要2013-03-20 00:00:00?或2013-03-20的数据? – OQJF 2013-03-12 01:06:37

+0

虽然我不太确定,但我仍然认为当前jpa2 – rafuru 2013-03-13 17:28:57

回答

0

修改查询为
SELECT E从事件为e其中e.idusr =:usr和CAST(e.datestart如日期)=:d和e.status =:状态 它会跳过的时间从给定的日期,只返回日期。

+0

的整个数据(日期和时间)日期),日期应以小写字母和大写字母给出。验证。 – OQJF 2013-03-12 01:21:08

+0

不支持您的演员阵容(e.dateStart as),因此我只需要将日期作为参数用于查询 – MGPJ 2013-03-12 01:23:39

+1

转换不受支持:/ – rafuru 2013-03-13 18:11:37