Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Error al comparar datetime con time jpa sólo en compilado

Hola a todos.

Tengo una aplicación web donde uso JPA para lanzar una consulta a base de datos, donde tengo que comprobar que la fecha de hoy esté en un rango que está guardado en base de datos (MySQL), los campos con los que comparo son datetime. El código de la consulta es el siguiente:

Query query = entitymanager.createQuery( "Select e " + "from Encuesta e JOIN e.zonaPk z where e.fechaHoraIni <= ?1 and e.fechaHoraFin >= ?1 and e.encuestaActivaSn = 1 and z.latitud1 >= ?2 and z.latitud2 <= ?2 and z.longitud1 >= ?3 and z.longitud2 <= ?3 ORDER BY e.fechaHoraIni ASC" );

query.setParameter(1, new Date());
query.setParameter(2, bd_latitud);
query.setParameter(3, bd_longitud);

List<Encuesta> list=(List<Encuesta>)query.getResultList( );

Mi problema es que si la fecha/hora de inicio guardada en base de datos está cercana (pero es anterior) a la actual la sentencia no trae ese registro, si ejecuto mañana la sentencia funciona correctamente. Pero lo más raro es que si ejecuto desde netbeans contra mi base de datos local funciona perfectamente, el error sólo se produce si compilo, subo a la nube (openshift) y ejecuto contra la base de datos que tengo allí alojada.

Alguna sugerencia de qué podría hacer para solucionar éste problema??? No sé ya qué probar...

Gracias y un saludo.

septiembre 9, 2015 | Unregistered Commenterjuanmax83

Hola de nuevo.

Creo que ya sé lo que puede ser, la sentencia funciona siempre bien si la diferencia es igual o mayor a 6 horas, por lo que supongo que la instrucción "new Date()" está consiguiendo la hora del servidor. ¿Qué puedo hacer para que utilice mi hora local?

Gracias y un saludo.

septiembre 10, 2015 | Unregistered Commenterjuanmax83

Vas a tener un problema de zonas horarias. ¿Que datos tienes en tu bd local y que datos tienes en el servidor?. ¿Que zona horaria tiene tu local y que zona horaria tiene tu servidor?

septiembre 10, 2015 | Registered Commenterantuansoft

Hola.

Mi zona horaria es la de España, UTC+1, mi aplicación web está subida a Openshift, y arranca contra un servidor Tomcat 7 (JBoss EWS 2.0), supongo que para que mi aplicación funcione correctamente tendré que cambiarle al servidor la hora ¿es correcto? ¿alguien sabe cómo se hace?

Gracias y un saludo

septiembre 10, 2015 | Unregistered Commenterjuanmax83