Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在使用JPQL的日期查询中忽略时间?_Java_Jpa_Jpql - Fatal编程技术网

Java 如何在使用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

我在使用日期(并忽略时间)查询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();
}
@覆盖
公共列表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),日期应以小写字母和大写字母给出。核实一下。