Meine Anwendung verwendet das View-Objekt-Entity-Paar für die Frontend-Backend-Interaktion. Das Frontend verwendet nur VOs, während das Backend nur Datenbank mit Entitäten redet. Und es gibt eine VO < -> Entities ConversionZeitstempel wird während des Ansichtsobjekts verloren -> Entitätskonvertierung
Meine Entity-Klasse verfügt über 2 Timestamp-Eigenschaften createTimestamp und lastUpdateTimestamp, die zwei nicht Nullable-Spalten in seiner Datentabelle entsprechen. Aber die VO hat niemals diese 2 Eigenschaften.
Mein aktuelles Problem: Da ein VO keine Timestamp-Eigenschaften enthält, wird die aus dem VO konvertierte Entität die 2 Timestamp-Eigenschaften null haben, und wenn ich diese Entitätsaktualisierung durchführe, tritt ein Fehler von der Datenbank auf Ich versuche, die Timestamp-Spalten auf Null zu setzen, was nicht erlaubt ist.
Ich möchte wissen, wie wir mit diesem Problem umgehen. Gibt es eine Möglichkeit, um diese 2 Timestamp bei der Aktualisierung in Datenbank zu machen, oder gibt es eine "elegante" Möglichkeit, die Timestamp Werte zu erhalten, bevor ich die Entity aktualisieren? Ich muss oft eine Liste von Entitäten auf einmal aktualisieren.
Lösung, die ich gefunden habe ich ein Attribut „aktualisierbar“ unter der @Column Anmerkung, und es scheint, mein Problem zu lösen. dh @Column (name = "CREATE_STAMP" nullable = false, aktualisierbare = false)
von diesem Posten Steuerspur Creation timestamp and last update timestamp with Hibernate and MySQL
Das funktioniert für die Erstellung des Datensatzes, aber ein DB-Trigger wäre für ein UPDATE erforderlich, so dass LASTUpdateTimestamp einen neuen Wert erhält. –
@AndrewS hat den Punkt. Es ist das Update, das mich stört. – ChrisZ
Überprüfen Sie die aktualisierte Antwort –