Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Deaktivieren Sie die automatische Aktualisierung des Ruhezustands beim Flush bei schreibgeschützten Synonymen

Höchstwahrscheinlich werden Ihre Entitäten in dem Moment "schmutzig", in dem sie aus der Datenbank geladen werden, und Hibernate denkt, dass es die Änderungen speichern muss. Dies passiert, wenn Ihre Zugriffsmethoden (get- und set-Methoden) nicht genau denselben Wert oder dieselbe Referenz zurückgeben die von Hibernate gesetzt wurde.

In unserem Code geschah dies mit Listen, Entwickler erstellten neue Listeninstanzen, weil ihnen der Typ, den sie im Setter erhielten, nicht gefiel.

Wenn Sie den Code nicht ändern möchten, ändern Sie die Zuordnung zu Feldzugriff.

Sie können auch verhindern, dass Hibernate Änderungen speichert, indem Sie FlushMode in der Sitzung auf nie setzen, aber dies verbirgt nur das eigentliche Problem, das in anderen Situationen immer noch auftreten und zu unnötigen Aktualisierungen führen wird.