Ruhezustand: Bereinigen Sie den Cache der zweiten Ebene der Sammlung, während Sie Elemente kaskadenartig löschen

Ich habe ein Problem Hibernate aktualisiert den Cache der zweiten Ebene nicht für eine Sammlung von Elementen, die der Kaskadenentfernung unterliegen.

Einzelheiten

Angenommen, wir haben ein Objekt Parent mit der Auflistung Parent.myChildren von Child-Objekten. Jetzt haben wir auch das Objekt Humans mit der Auflistung Humans.myAllHumans und alle übergeordneten und untergeordneten Objekte befinden sich in dieser Auflistung.
Jetzt wirsession.delete (Eltern) und alle Kinder werden aus der Datenbank entfernt, aber der Cache der Sammlung Humans.myAllHumans wird nicht aktualisiert! Es wird weiterhin davon ausgegangen, dass sich in Kaskade gelöschte Objekte in der Datenbank befinden und die folgende Ausnahme auftritt, während versucht wird, die Auflistung später zu wiederholen:
org.hibernate.ObjectNotFoundException: Keine Zeile mit dem angegebenen Bezeichner vorhanden: [foo.Child # 751]

Ansätze ausprobiert

1) Ich habe es versuchtSessionFactory.evictCollection () Ansatz, aber wie ich verstehe, ist es nicht transaktionssicher und entfernt Daten aus dem 2nd Level Cache, ich will das nicht.

2) Ich kann jedes Objekt auch manuell (programmgesteuert) aus der myAllHumans-Auflistung entfernen. In diesem Fall aktualisiert der Ruhezustand den Cache der zweiten Ebene. Diesen Ansatz möchte ich vermeiden, da er die Kaskadenlöschfunktion unbrauchbar macht.

Erwartet

Ich möchte, dass der Ruhezustand so intelligent ist, dass der Cache der Sammlung automatisch aktualisiert wird. Ist es möglich?
Ich verwende jetzt EhCache. Glauben Sie, dass die Verwendung einer anderen Cache-Implementierung oder die Konfiguration von EhCache hilfreich sein kann?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage