Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
比较jpa中的日期_Jpa - Fatal编程技术网

比较jpa中的日期

比较jpa中的日期,jpa,Jpa,我试图在两个日期之间的postgresql数据库中查找结果(ddbb中描述为时间戳的字段) 我有以下三项记录,必须达到目标: 2016-03-04 00:00:00 2016-03-04 14:00:00 2016-03-04 10:56:00 final Calendar fechaMinima = Calendar.getInstance(); 设置我想要的参数 jpa列的定义如下: @Column(name = "tim_ofrecim") @NotNull @Temporal(Temp

我试图在两个日期之间的postgresql数据库中查找结果(ddbb中描述为时间戳的字段)

我有以下三项记录,必须达到目标: 2016-03-04 00:00:00 2016-03-04 14:00:00 2016-03-04 10:56:00

final Calendar fechaMinima = Calendar.getInstance();
设置我想要的参数

jpa列的定义如下:

@Column(name = "tim_ofrecim")
@NotNull
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(style = "M-")
private Date Tewslofr.timOfrecim;
对于JPA,我尝试使用以下代码查找它们:

@NamedQuery(name = "ofr_query2", query = "SELECT COUNT (*) FROM Tewslofr ofr "
                + "WHERE ofr.id.codIdprodto =:codIdprodto "
                + "AND ofr.codUser =:codUser "
                + "AND ofr.timOfrecim BETWEEN :timMinimo AND :timMaximo")

public static Long getMethod(final String codProducto,
            final String codUser, final Calendar fechaMinima,
            final Calendar fechaMaxima) {

    return entityManager().createNamedQuery("ofr_query2", Long.class)
            .setParameter("codIdprodto", codProducto)
            .setParameter("codUser", codUser)
            .setParameter("timMinimo", fechaMinima, TemporalType.TIMESTAMP)
            .setParameter("timMaximo", fechaMaxima, TemporalType.TIMESTAMP)
            .getSingleResult();
}
并获取此例外:

原因:java.lang.IllegalArgumentException:参数值[java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“Europe/Paris”,offset=3600000,DSTSCAVES=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,DStSaves=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startDayOfWeek=1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2016,MONTH=2,WEEK=10,WEEK=2,DAY=1,DAY=67,DAY=2,DAY=1,AM=0,HOUR=8,HOUR=0,MINUTE=0,毫秒=434,ZONE=3600000,DST=0]不匹配[java]日期类型

指向此的堆栈跟踪是:

org.springframework.dao.InvalidDataAccessApiUsageException:参数值[java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“Europe/Paris”,offset=3600000,dstSavings=3600000,UseDayland=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,DStSaves=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startDayOfWeek=1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2016,MONTH=2,WEEK=2,DAY=1,DAY=67,DAY=2,DAY=1,AM=0,HOUR=9,HOUR=0,MINUTE=0,Millia秒=170,ZONE=3600000,DST=0]类型不匹配[java.util];嵌套异常为java.lang.IllegalArgumentException:Parameter value[java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“Europe/Paris”,offset=3600000,dstSavings=3600000,UseDayland=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,DStSaves=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startDayOfWeek=1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2016,MONTH=2,WEEK=2,DAY=1,DAY=67,DAY=2,DAY=1,AM=0,HOUR=9,HOUR=0,MINUTE=0,Millia秒=170,ZONE=3600000,DST=0]类型不匹配[java.util] 在org.springframework.orm.jpa.EntityManagerFactoryUtils.ConvertJPAAccessExceptionIffailable(EntityManagerFactoryUtils.java:301)上 在org.springframework.orm.jpa.aspectj.jpaexceptiontranslatorspect.ajc$后面加上$org\u springframework\u orm\u jpa\u aspectj\u jpaexceptiontranslatorspect$1$18a1ac9(jpaexceptiontranslatorspect.aj:15) 位于com.bbva.arq.front.spring.ewsl.ofrecientos.api.v1.domain.Tewslofr.getcuentofrecientosagente_aroundBody2(Tewslofr.java:49) 位于com.bbva.arq.front.spring.ewsl.ofrecientos.api.v1.domain.Tewslofr.getcuentaofrecientosagente(Tewslofr.java:1) 在com.bbva.arq.front.spring.ewsl.ofrecientos.api.v1.daos.ofrecientos.impl.ofRecientosDaoImpl.getMethod(ofRecientosDaoImpl.java:52)上。。。 原因:java.lang.IllegalArgumentException:参数值[java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“Europe/Paris”,offset=3600000,DSTSCAVES=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,DStSaves=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startDayOfWeek=1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2016,MONTH=2,WEEK=2,DAY=1,DAY=67,DAY=2,DAY=1,AM=0,HOUR=9,HOUR=0,MINUTE=0,Millia秒=170,ZONE=3600000,DST=0]类型不匹配[java.util] 位于org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:360) 位于org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:414)

如果我更改为日期而不是时间戳:

public static Long getMethod(final String codProducto,
            final String codUser, final Calendar fechaMinima,
            final Calendar fechaMaxima) {

    return entityManager().createNamedQuery("ofr_query2", Long.class)
            .setParameter("codIdprodto", codProducto)
            .setParameter("codUser", codUser)
            .setParameter("timMinimo", fechaMinima.getTime(), TemporalType.DATE)
            .setParameter("timMaximo", fechaMaxima.getTime(), TemporalType.DATE)
            .getSingleResult();
}
代码返回0

任何帮助都将不胜感激


最诚挚的问候

我仍然不知道为什么第一个选项不起作用,但是我已经使用了日期选项。这个选项是正确的,但是返回0是因为de codIdprodto,而不是因为日期。

你能得到整个stacktrace吗?我感觉异常是由.getTime()引发的方法,而不是JPAI使用stacktrace编辑文章