Hibernate y las fechas
Hoy me ha pasado una cosa con Hibernate que me ha hecho perder el tiempo a lo tonto.
El problema se manifestaba con una excepción al insertar un objeto en un TreeSet. La excepción decía que no se podía hacer un cast de java.sql.Timestamp a java.util.Date.
No se de donde salía el Timestamp. En la clase el campo era de tipo java.util.Date, y el setter y el getter solo usaban Date. Puse una traza para mostrar el nombre de la clase utilizado en el setter y me encuentro que parte de los valores los inserta como java.util.Date y parte como java.sql.Timestamp. Sigo sin saber el motivo.
He modificado el campo del tipo de dato en el fichero de mapeo de la clase porque tenía puesto java.util.Date y le puse es tipo usado por Hibernate, date. pero tampoco dió resultado.
Al final, como necesitaba una solución rápida para avanzar con la demo, lo que hice fue modificar el setter que quedó como algo así:
public void setMomentoDeLaMedida(Date momentoDeLaMedida) {
if (momentoDeLaMedida instanceof "java.sql.Timestamp") {
Timestamp timestamp = (Timestamp) momentoDeLaMedida;
Date nuevaFecha = new Date(timestamp.getTime());
this.momentoDeLaMedida = nuevaFecha;
} else {
this.momentoDeLaMedida = momentoDeLaMedida;
}
}
Con ese cambio por lo menos ya no salía la excepción y ya podía continuar con mis pruebas de comunicaciones con el servidor.

0 Comments:
Publicar un comentario
<< Home