Oracle
 sql >> Baza danych >  >> RDS >> Oracle

JPA 2.0 Oracle DATE ma czas zerowy

W przypadku tego rodzaju problemów zwykle pomaga podanie wersji sterownika JDBC i używanego dialektu.

W każdym razie rozumiem, że rzeczywiście potrzebujesz następującego mapowania (dla DATE i CZAS):

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

A problem, z którym się zmagasz, jest w jakiś sposób związany z szaleństwem wprowadzonym przez Oracle w wersji 9.2, zobacz Co się dzieje z DATE i TIMESTAMP? (w skrócie, wprowadzili TIMESTAMP kolumna i zmieniono mapowanie DATE Typ SQL, przeczytaj FAQ). Istnieje kilka opcji rozwiązania tego problemu (oczywiście zakładam, że używasz TemporalType.TIMESTAMP mapowanie):

Użyj TIMESTAMP typ kolumny (Nie mam na myśli TemporalType.TIMESTAMP tutaj naprawdę mam na myśli typ kolumny po stronie DB). Ale jeśli nie potrzebujesz dokładności nanosekundowej, nie jest to najlepszy wybór.

Lub ustaw oracle.jdbc.V8Compatible=true tryb zgodności, jako właściwość systemowa lub jako właściwość połączenia:

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

Tak, możesz ustawić dowolne właściwości połączenia w ten sposób. Z dokumentacji Hibernate:

Lub użyj sterownika Oracle JDBC 11.1 ("naprawili" problem, cofając zmianę). To jest idealne rozwiązanie IMO (V8Compatible rzeczy są przestarzałe).

Powiązany problem



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Daty porównujące Oracle SQL

  2. Kolumna zapytań z typem danych char w oracle

  3. sprawdź, czy jest to funkcja liczbowa w Oracle

  4. PHP7.0-FPM z Dockerem:Nie można załadować biblioteki dynamicznej OCI8

  5. Jak stworzyć projekt bazy danych Oracle w Visual studio 2010?