JPA JPA 2.2 und die Time API

mihe7

Top Contributor
Guten Abend,

seit JPA 2.2 wird ja die Time API teilweise unterstützt, also wollte ich das - endlich mal - in Angriff nehmen. Das Mapping sieht aktuell so aus:
Java:
@Entity 
public class SomeEntity implements Serializable {
    @Id 
    private String id;

    @Column(columnDefinition="TIMESTAMP")
    private LocalDateTime datum;

    // Konstruktoren, Setter, Getter...
}
So weit, so gut. Jedoch erhält jedes neu persistierte Objekt, obwohl datum == null gilt, automatisch die aktuelle Zeit und zwar unabhängig vom in der DB eingestellten DEFAULT. WTF?!?

Das lässt sich zur Not noch verhindern, indem man insertable = false setzt, wobei ich es seltsam finde, dass JPA sich nicht zu einem NULL überreden lässt. Weiß jemand, ob das irgendwo spezifiziert ist? In der JPA-Spec konnte ich dazu auf die Schnelle nichts finden.

Für den Fall, dass updatable = true gilt, hoffe ich mal, dass wenigstens der gespeicherte Wert nicht auch noch durch das aktuelle Datum ersetzt wird.

Oder ist der Käse vielleicht auch noch vom JDBC-Treiber abhängig? :eek:

Evtl. stehe ich auch nur auf dem Schlauch.
 

mrBrown

Super-Moderator
Mitarbeiter
Bei mit funktioniert das problemlos (mit Spring Boot, Hibernate und H2), ich habe keine Idee, warum da irgendwie das aktuelle Datum eingefügt werden sollte o_O
 

mihe7

Top Contributor
@mrBrown das wollte ich lesen :) Dann lohnt es sich, weiter zu suchen, ansonsten wäre das ziemlich witzlos gewesen.

-------
Während ich diese Antwort formuliere, neue Erkenntnisse:

@Tobias-nrw OMFG. Wer lesen kann, ist klar im Vorteil. In der von Dir zitierten Stackoverflow-Antwort habe ich zigmal den wesentlichen Teil überlesen: MySQL. Das führt dann über

MySQL Documentation hat gesagt.:
If the explicit_defaults_for_timestamp system variable is disabled, TIMESTAMP columns by default are NOT NULL, cannot contain NULL values, and assigning NULL assigns the current timestamp.

zur Frage, warum das bislang kein Problem war, die mir das Schema beantwortet: überall waren DATE-Spalten verwendet worden. Right in the face. Der Moment, wenn man den Kopf gen Tischplatte fallen lässt... :mad:

Danke Euch.
 

Neue Themen


Oben