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.
Antwort
Zu viele Anzeigen?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. WennGenerationTime.INSERT
gewählt wird, ist die Eigenschaft darf nicht einfügbar sein Spalten enthalten, wennGenerationTime.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 entwederNEVER
ouALWAYS
.