For denne type problemer hjælper det normalt at angive versionen af JDBC-driveren og den dialekt, du bruger.
Jeg forstår i hvert fald, at du faktisk ønsker følgende kortlægning (for DATO og TID):
@Column(name = "READING_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date readingDate;
Og det problem, du står over for, er på en eller anden måde relateret til vanviddet introduceret af Oracle med version 9.2, se Hvad sker der med DATO og TIDSSTYKKE?
(kort sagt introducerede de en TIMESTAMP
kolonne og ændrede tilknytningen af DATE
SQL-type, læs ofte stillede spørgsmål). Der er flere muligheder for at løse det (jeg går selvfølgelig ud fra, at du bruger en TemporalType.TIMESTAMP
kortlægning):
Brug enten en TIMESTAMP
kolonnetype (Jeg mener ikke TemporalType.TIMESTAMP
her mener jeg virkelig kolonnetypen på DB-siden). Men hvis du ikke har brug for nanosekund præcision, er dette ikke det bedste valg.
Eller indstil oracle.jdbc.V8Compatible=true
kompatibilitetstilstand, enten som systemegenskab eller som forbindelsesegenskab:
<property name="hibernate.connection.oracle.jdbc.V8Compatible">true</property>
Ja, du kan indstille vilkårlige forbindelsesegenskaber som denne. Fra Dvale-dokumentationen:
Eller brug Oracle JDBC 11.1-driver (de "løste" problemet ved at fortryde ændringen). Dette er IMO den ideelle løsning (den V8Compatible
ting er forældet).