sql >> Base de Datos >  >> RDS >> Oracle

JPA 2.0 Oracle DATE tiene tiempo nulo

Para este tipo de problemas, generalmente ayuda proporcionar la versión del controlador JDBC y el dialecto que está utilizando.

De todos modos, tengo entendido que en realidad desea la siguiente asignación (para FECHA y HORA):

@Column(name = "READING_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date readingDate;

Y el problema que enfrenta está relacionado de alguna manera con la locura introducida por Oracle con la versión 9.2, consulte ¿Qué sucede con DATE y TIMESTAMP? (en resumen, introdujeron un TIMESTAMP columna y cambió la asignación de DATE tipo SQL, lea las preguntas frecuentes). Hay varias opciones para resolverlo (supongo, por supuesto, que está utilizando un TemporalType.TIMESTAMP asignación):

Utilice un TIMESTAMP tipo de columna (No me refiero a TemporalType.TIMESTAMP aquí, realmente me refiero al tipo de columna en el lado DB). Pero si no necesita una precisión de nanosegundos, esta no es la mejor opción.

O establezca oracle.jdbc.V8Compatible=true modo de compatibilidad, ya sea como propiedad del sistema o como propiedad de conexión:

<property name="hibernate.connection.oracle.jdbc.V8Compatible">true</property>

Sí, puede establecer propiedades de conexión arbitrarias como esta. De la documentación de Hibernate:

O use el controlador Oracle JDBC 11.1 (ellos "solucionaron" el problema revirtiendo el cambio). En mi opinión, esta es la solución ideal (el V8Compatible cosas están en desuso).

Problema relacionado