JPA 3.2 & SQLite - LocalDateTime wird falsch geladen

Maxim6394

Bekanntes Mitglied
Ich verwende gerade JPA 3.2 mit EclipseLink 4 und einer SQLite Datenbank und will eine Entität mit LocalDateTime persistieren. Es scheint den richtigen Zeitstempel als Zahl zu speichern, aber beim Laden der Entität ist ein falscher Wert zu sehen. Der Zeitstempel 1698421155669 wird z.B. als +55790-10-28T06:21:09 geladen.

1698422727398.png

Das Attribut ist so definiert:
Java:
@Column(nullable = false)
public LocalDateTime timeOrdered = LocalDateTime.now();

Ich hab auch versucht einen AttributeConverter hinzuzufügen, aber der scheint gar nicht erkannt zu werden.
Java:
@Converter(autoApply = true)
public class LocalDateTimeAttributeConverter implements AttributeConverter<LocalDateTime, Timestamp> {

    @Override
    public Timestamp convertToDatabaseColumn(LocalDateTime locDateTime) {
        return locDateTime == null ? null : Timestamp.valueOf(locDateTime);
    }

    @Override
    public LocalDateTime convertToEntityAttribute(Timestamp sqlTimestamp) {
        return LocalDateTime.now();
        //return sqlTimestamp == null ? null : sqlTimestamp.toLocalDateTime();
    }
}

Das Problem scheint nur bei SQLite aufzutreten, mit H2 wird das wohl richtig geladen.
Woran kann das liegen und kann man das auch als String persistieren?
 
Zuletzt bearbeitet:
Versuche mal in deiner Entity die Spalte so anzugeben:
Java:
@Temporal(TemporalType.TIMESTAMP)
@Column(nullable = false)
private LocalDateTime timeOrdered;

// Getter u. Setter
...
SQLite ist auch wirklich keine gute Wahl für eine DB unter Java, erst Recht nicht für JPA.
 

Zurück
Oben