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

JPA 2.0 Oracle DATE har null tid

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).

Relateret problem



  1. Ugentlig timefordelingsproblem i Rails og Postgresql

  2. Sådan opretter du en offline internationaliseringsapp:Brug Sqlite-databasen

  3. Få de første tegn fra en streng

  4. php upload billeder og gem filnavn til mysql