Java 如何在使用JPQL的日期查询中忽略时间?
我在使用日期(并忽略时间)查询JPQL时遇到问题。这是我的方法:Java 如何在使用JPQL的日期查询中忽略时间?,java,jpa,jpql,Java,Jpa,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
@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();
}
@覆盖
公共列表findByDayAndStatus(用户usr、日期d、字符状态){
Query q=em.createQuery(“从事件中选择e作为e where”+
“e.idusr=:usr和e.datestart=:d和”+
“e.status=:status”,事件类);
q、 设置参数(“usr”,usr);
q、 setParameter(“datestart”,d,TemporalType.DATE);
q、 设置参数(“状态”,状态);
返回q.getResultList();
}
问题是我得到的是一个空列表,当我在查询中省略日期参数时,我得到的是数据
我认为日期有问题,因为我查询的方式类似于2013-03-20 00:00:00,数据库日期类似于2013-03-20 12:00:00。将查询修改为从事件中选择e作为e,其中e.idusr=:usr和cast(e.datestart as date=:d和e.status=:status
它将跳过给定日期的时间,只返回日期。您想要哪种数据,仅2013-03-20 00:00:00?或者2013-03-20中的数据?我希望整个数据(日期和时间)仅使用日期作为查询的参数,虽然不确定,但我仍然认为当前的JPA2不支持强制转换。您可能已经给出强制转换(例如dateStart as date),日期应以小写字母和大写字母给出。核实一下。