3 Stimmen

Erstellen einer benutzerdefinierten temporalen JPA-Annotation

Ich möchte einige mycoulmns in der JPA-Entität, Werte aus der Datenbank während Einfügungen/Aktualisierungen, d.h. von Oracle sys_context zu nehmen, ich glaube, JPA temporale Annotation enthält Datenbank generierte Zeitstempel während Einfügungen/Aktualisierungen, gibt es irgendeine Möglichkeit, die ich eine benutzerdefinierte Annotation etwas simailar zu diesem erstellen könnte oder einige Standardwerte während Einfügungen/Aktualisierungen bereitstellen, kann jemand einige Hinweise geben, wenn Sie diese Situation konfrontiert.

2voto

Pascal Thivent Punkte 548176

Ich möchte einige der mycoulmns in der JPA-Entität, um Werte aus der Datenbank während Einfügungen/Aktualisierungen zu nehmen

Konfigurieren Sie die @Column nicht einfügbar und aktualisierbar sein und das Feld mit @Generated (Hibernate-spezifischer Vermerk). Auf diese Weise holt Hibernate den Wert nach einem Insert oder Update aus der Datenbank. Aus der Referenzdokumentation:

2.4.3.5. Generierte Eigenschaften

Einige Eigenschaften werden erzeugt bei Einfüge- oder Aktualisierungszeitpunkt von Ihrer Datenbank erzeugt. Hibernate kann mit solchen Eigenschaften umgehen und löst ein anschließendes Select aus, um diese Eigenschaften zu lesen.

@Entity
public class Antenna {
    @Id public Integer id;
    @Generated(GenerationTime.ALWAYS) 
    @Column(insertable = false, updatable = false)
    public String longitude;

    @Generated(GenerationTime.INSERT) @Column(insertable = false)
    public String latitude;
}

Vermerken Sie Ihre Eigenschaft als @Generated Sie müssen sicherstellen, dass Ihre Einfügbarkeit oder Aktualisierbarkeit nicht mit der gewählten Generierungsstrategie die Sie gewählt haben. Wenn GenerationTime.INSERT gewählt wird, ist die Eigenschaft darf nicht einfügbar sein Spalten enthalten, wenn GenerationTime.ALWAYS gewählt wird, darf die Eigenschaft nicht einfügbare oder aktualisierbare Spalten enthalten Spalten enthalten.

@Version Eigenschaften nicht sein @Generated(INSERT) hat sie von vornherein entweder NEVER ou ALWAYS .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X