Oracle
 sql >> Database >  >> RDS >> Oracle

JPA 2.0 Oracle DATE ha un tempo nullo

Per questo tipo di problemi, di solito è utile fornire la versione del driver JDBC e il dialetto che stai utilizzando.

Ad ogni modo, ho capito che in realtà vuoi la seguente mappatura (per DATE e TEMPO):

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

E il problema che stai affrontando è in qualche modo correlato alla follia introdotta da Oracle con la versione 9.2, vedi Cosa sta succedendo con DATE e TIMESTAMP? (in breve, hanno introdotto un TIMESTAMP colonna e modificato la mappatura di DATE tipo SQL, leggi le FAQ). Ci sono diverse opzioni per risolverlo (ovviamente presumo che tu stia usando un TemporalType.TIMESTAMP mappatura):

Usa un TIMESTAMP tipo di colonna (Non intendo TemporalType.TIMESTAMP qui, intendo davvero il tipo di colonna sul lato DB). Ma se non hai bisogno di una precisione di nanosecondi, questa non è la scelta migliore.

Oppure imposta oracle.jdbc.V8Compatible=true modalità di compatibilità, sia come proprietà di sistema che come proprietà di connessione:

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

Sì, puoi impostare proprietà di connessione arbitrarie come questa. Dalla documentazione di Hibernate:

Oppure usa il driver Oracle JDBC 11.1 (hanno "risolto" il problema annullando la modifica). Questa è IMO la soluzione ideale (il V8Compatible roba è deprecata).

Problema correlato