2009-06-07 10 views
5

Aparece el mensaje "literal no coincide con la cadena de formato".Asignación de una fecha de Oracle a un objeto Java utilizando Hibernate

Por ejemplo, aquí hay algunos métodos de una clase Java:

public String getDateTime(); 
public void setDateTime(String date_time); 

Aquí está el mapeo desde el archivo de configuración de Hibernate para esa clase:

<property name="dateTime" column="date_time"> 

y aquí está el DDL para que columna:

CREATE TABLE "SCHEMA"."TABLE_NAME" 
    ( 
    "DATE_TIME" DATE, 
    etc. 
    ) 

Intenté fijar type = "fecha" y "marca de tiempo" (no al mismo tiempo) como una attr en la propiedad en la configuración de hibernación, y luego cambiar el tipo de Java de String a Date, pero eso me dio un error diferente. Leí algo sobre el enlace del parámetro, pero no pude entenderlo.

Cuando comento que la propiedad de la configuración de todo lo demás está funcionando, entonces estoy seguro de que ese es mi problema. Lo molesto es que tengo otro mapeo de tabla/clase con aparentemente el mismo mapeo Oracle Date-> Java String que no me da este problema.

Respuesta

8

Sería mejor utilizar una clase de fecha Java.util como propiedad para reflejar la columna de fecha del oráculo.

Class blah{ 
private Date dateTime; 

public Date getDateTime(); 
public void setDateTime(Date dateTime); 

blah(){} 

} 

¿Cuál fue el error cuando se utiliza la fecha como la propiedad de la clase Java?

+0

Guh. No creo que haya cambiado el tipo de parámetro del método setter de String to Date la primera vez. Sintiéndome tonto, porque funcionó como un reloj esta vez. –

+2

Esto solo funciona si NO incluye el atributo "tipo" en la propiedad de correlación: Si incluye el tipo con un valor de "fecha" o "marca de tiempo" "No convertirá con precisión los valores. Entonces el siguiente es MALO: Aquí hay un enlace que explica por qué esto es cierto: http://fishbowl.pastiche.org/2005/07/13/hibernate_oracle_and_dates_a_story/y aquí hay un enlace que explica la solución: http://www.enavigo.com/2007/10/20/mapping-hibernate-to-oracle-date-fields/ –

2

El tipo de su atributo dateTime debe ser Timestamp o Date, que debe convertir automáticamente la fecha/hora de Oracle. No veo el punto de mantener la fecha como un String ya que debe involucrar el formateo.

Cuestiones relacionadas