Ich habe ein Problem mit der Konvertierung von 1000-01-01 00: 00: 00.0 zu einem LocalDateTime-Objekt. Ich habe bereits die Oracle docs überprüft, um zu sehen, ob vielleicht 1000-01-01 nicht unterstützt wird, aber das scheint nicht das Problem.Hibernate Timestamp zu LocalDateTime Konvertierung unerwartetes Ergebnis
Die Versionen Ich bin Hibernate-Kern mit: 5.2.1.Final
Hibernate-commons-Anmerkungen: 5.0.1.Final
hsqldb: 2.3.4
feder Test-DBUnit: 1.2. 0
Dies ist, wie in MyEntity.class startdate
@Basic
@Column(name = "start_date", nullable = false)
public LocalDateTime getstartDate() {
return startDate;
}
Hibernate sieht schafft es wie folgt aus:
Query:[create table my_table (end_date timestamp not null, start_date timestamp not null)]
Ich habe einen (Beispiel) Datensatz mit der folgenden Zeile
<my_table startDate="1000-01-01 00:00:00.0" endDate="4000-01-01 00:00:00.0" />
DBUnit wird, um die Daten in einem In-Memory-Datenbank Hibernate
Query:["insert into my_table(START_DATE, END_DATE) values (?, ?)"]
Params:[(1=1000-01-01 00:00:00.0,2=4000-01-01 00:00:00.0)]
In meinem JUnit-Test lädt Ich hole die Daten unter Verwendung eines (Hibernate) Entitymanagers und der folgenden benannten Abfrage:
Die Auswahlabfrage (vereinfacht):
Query:["select end_date as date_e12_4_, start_date as date_s13_4_ from my_table mytable0_"]
In meinem JUnit-Test ich das zurückgegebene Ergebnis behaupten aber ich erhalte eine AssertionError:
java.lang.AssertionError:
Expected :MyEntity{startDate=1000-01-01T00:00, endDate=4000-01-01T00:00}
Actual :MyEntity{startDate=1000-01-05T23:09:21, endDate=4000-01-01T00:00}
Mein startdate 1000-01-01T00: 00 wird 1000-1001 - 05T23: 09: 21.
Das Problem tritt nicht mit dem EndDate auf.
Hat jemand dieses Problem schon einmal gehabt? Oder weiß jemand, wie man es löst? Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Jede Hilfe wird sehr geschätzt.
Update: es funktioniert, wenn ich LocalDate anstelle von LocalDateTime verwenden.
Welche Engine verwendet die In-Memory-Datenbank? Ist es möglich, dass die Datenbank solche Daten nicht unterstützt? –
Erst seit ich LocalDateTime verwende, ist dieses Problem aufgetreten. Ich habe java.sql.Timestamp vorher ohne Problem benutzt. Die fehlgeschlagenen Tests bestanden bereits während der Timestamp-Periode meines Projekts. –