sql >> Databasteknik >  >> RDS >> Oracle

JPA 2.0 Oracle DATE har nulltid

För den här typen av problem hjälper det vanligtvis att tillhandahålla versionen av JDBC-drivrutinen och dialekten du använder.

Hur som helst, jag förstår att du faktiskt vill ha följande mappning (för DATUM och TID):

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

Och problemet du står inför är på något sätt relaterat till galenskapen som introducerades av Oracle med version 9.2, se Vad händer med DATUM och TIDSTÄMPEL? (kort sagt introducerade de en TIMESTAMP kolumnen och ändrade mappningen av DATE SQL-typ, läs FAQ). Det finns flera alternativ för att lösa det (jag antar naturligtvis att du använder en TemporalType.TIMESTAMP kartläggning):

Använd antingen en TIMESTAMP kolumntyp (Jag menar inte TemporalType.TIMESTAMP här menar jag verkligen kolumntypen på DB-sidan). Men om du inte behöver nanosekundsprecision är detta inte det bästa valet.

Eller ställ in oracle.jdbc.V8Compatible=true kompatibilitetsläge, antingen som systemegenskap eller som en anslutningsegenskap:

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

Ja, du kan ställa in godtyckliga anslutningsegenskaper så här. Från Hibernate-dokumentationen:

Eller använd Oracle JDBC 11.1-drivrutinen (de "fixade" problemet genom att återställa ändringen). Detta är IMO den idealiska lösningen (den V8Compatible). saker är utfasade).

Relaterat problem



  1. fatalt fel 'stdio.h' Python 2.7.3 på Mac OS X 10.7.5

  2. Hur bygger man en motor för "relaterade frågor"?

  3. PostGIS - konvertera multipolygon till enkel polygon

  4. Hur läser du XML-kolumnen i SQL Server 2008?