es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Hibernate devuelve el tipo de dato de fecha incorrecto (recibe sql.date en lugar de util.date)

Como se describió anteriormente, obtengo el tipo de datos incorrecto al recuperar datos de la base de datos a través de Hibernate. Obtengo un valor de la clase java.sql.date para un atributo de Fecha de Nacimiento de un objeto persona que en realidad tiene el tipo de datos java.util.date, lo que en el curso de la validación (debido a una anotación PresentOrPast) lleva a un error porque java.sql.date.toInstant() inevitablemente arroja un error.

El atributo mencionado es:

import java.util.Date;

@PastOrPresent
private Date birthdate

Aquí está el fragmento de “Person.hbm.xml”:

https://i.stack.imgur.com/fwJCM.png

Intenté configurar el atributo correspondiente como java.sql.date, esperando que el conflicto se deba a que se espera java.util.Date y se suministra sql.Date, pero este no es el caso.

Sin embargo, la inserción de datos en la base de datos mediante Hibernate funciona porque en tiempo de ejecución el programa instancia el atributo como java.util.date como se pretende.

Pero debido al error descrito anteriormente, una actualización que incluya la validación de los datos se vuelve difícil, ya que esto conduce al mensaje de error anterior debido al error descrito.

También he buscado cuidadosamente en el proyecto y no hay una importación de java.sql.Date en ninguno de los archivos.

Ahora la pregunta es ¿Alguien tiene una idea o pista de cómo puedo hacer que Hibernate pase el valor de Fecha de Nacimiento como java.util.date como se pretende y no como java.sql.date?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como se describe anteriormente, obtengo el tipo de datos equivocado al recuperar datos de la base de datos a través de Hibernate. Obtengo un valor de la clase java.sql.date para un atributo de Fecha de Nacimiento de un objeto persona que en realidad tiene el tipo de datos java.util.Date, lo que en el curso de la validación (debido a una anotación @PastOrPresent) conduce a un error porque java.sql.date.toInstant() inevitablemente arroja un error.

    El atributo mencionado:

    import java.util.Date;
    
    @PastOrPresent
    private Date birthdate;
    

    [Fragmento de Person.hbm.xml][2]

    Intenté establecer el atributo correspondiente en java.sql.date, con la esperanza de que el conflicto se deba a que se espera util.Date y se suministra sql.Date, pero este no es el caso. Sin embargo, la inserción de datos en la base de datos a través de Hibernate funciona porque en tiempo de ejecución el programa instancia el atributo como java.util.Date como se pretendía.

    Pero debido al error descrito anteriormente, una actualización que incluye la validación de los datos se vuelve difícil, ya que esto conduce al mensaje de error anterior debido al error descrito. También he buscado cuidadosamente en el proyecto y no hay ninguna importación de java.sql.Date en ninguno de los archivos.

    Ahora la pregunta es, ¿alguien tiene alguna idea o pista de cómo puedo hacer que Hibernate pase el valor de la Fecha de Nacimiento como java.util.Date como se pretende y no como java.sql.date?

Comments are closed.