Wenn mein Entity Felder Update sollte auf die Datenbank vor dem Speichern berechnete sein (db insert
oder update
) Wie ich einen Methodenaufruf vor Hibernate oder Spring Data einhaken können Repository save()
onSave() (für jede Entität mit Hibernate/Spring Data Repositories gespeichert)
2
A
Antwort
8
ich denke, die beste Option für Sie sind EntityListener
die @PrePersist
und @PreUpdate
Annotationen verwenden, um die Konfiguration für Ihr Unternehmen Zuhörer und Sie erhalten Zugang zu jeder Instanz, die Sie speichern möchten, ist diese Methode jedes Mal wird aufgerufen Sie versuchen, etwas mit Hibernate- oder Spring-Data-Repositories zu speichern oder zu aktualisieren
public class EntityToPersistListener{
@PrePersist
@PreUpdate
public void methodExecuteBeforeSave(final EntityToPersist reference) {
//Make any change to the entity such as calculation before the save process
reference.setAmount(xxxx)
}
}
Sie müssen nur
@Entity
@Table(name = "", schema = "", catalog = "")
@EntityListeners(EntityToPersistListener.class)
public class EntityToPersist implements Serializable {
prüfen diese link zur weiteren
Groß eine Anmerkung über Ihre Entity-Bean hinzuzufügen. Bleibt der einzige Fall, wie würde das für alle Entitäten funktionieren, ohne die Annotation "@ EntityListeners" hinzuzufügen. –
Ich denke, Sie müssen die Listener pro Entität definieren, da sie das Objekt innerhalb der Methode erhalten, aber es gibt auch eine Datei namens orm.xml, in der Sie die Listener und Audits definieren können. – Koitoer