Ich habe eine Entität Anruf Firma und eine andere Entität Anruf Token.Wie zu vermeiden, schmutzig Überprüfung im Ruhezustand
1 Firma wird viele Tokens haben.
So in meine Firma Einheit, ich so etwas wie folgen haben:
@OneToMany(mappedBy = "companyId")
public Set<Token> getTokens() {
return tokens;
}
Allerdings werde ich einige Logik während der Rückkehr haben, wird die Token-Liste vor Rückkehr, seine etwas wie Folge ändern:
Da ich den Wert in der Token-Liste ändere, wird jedes Mal, wenn ich das Firmenobjekt aus db mit Hibernate wähle, die Firmentabelle automatisch aktualisiert.
Basis meines Verständnisses ist dies ein Verhalten der Überprüfung von überwinterten Hibernate. Wenn Hibernate erkennt, dass sich dort etwas ändert, wird das Update für die Datenbank ausgeführt.
Gibt es eine Möglichkeit, dies zu vermeiden? Zum Beispiel, vielleicht rufen Sie einfach die bestehende Hibernate-Funktion auf, damit Hibernate weiß, dass die Token-Liste verschmutzt ist, und das Update wird nicht ausgeführt.
Ja, ich weiß, dass die Filterlogik in getTokens() nicht geeignet ist. Die richtige Filterlogik sollte nicht auf Entitätsebene angewendet werden. Aber aufgrund der Tatsache, dass es derzeit viele Orte gibt, die diese Methode verwenden, wenn ich mich in dieser Entity-Ebene ändere, wird es andere beeinflussen und wenn ich auch einen anderen Ort ändere, muss die gesamte Anwendung erneut getestet werden.
So versuche ich einen besseren Weg zu finden.
Ein alternativ Sie tun können, ist, anstatt die Originaldaten zu verändern, Kopie der ursprünglichen Daten erstellen und dann Ihre Logik auf kopierten Daten durchführen und dann kopierten Daten zurück. –