Hibernate - Manipulieren der Sammlungsnachladung

8

Wir versuchen, die persistente Sammlung basierend auf den darin enthaltenen Objekten zu filtern / manipulieren (bestimmte Einträge herauszufiltern).

Da diese Manipulation an einer großen Anzahl verschiedener Objekte mit unterschiedlichen Sammlungen durchgeführt wird, muss sie so allgemein wie möglich sein. Das Filtern auf HQL \ SQL-Ebene ist keine Option, da es unmöglich ist, sie zu verwalten. Dies bedeutet, dass es ausgeführt werden muss, nachdem die Sammlung geladen und initialisiert wurde. Wir verwenden derzeit viele Hibernate-Ereignisse, um einzelne Objekte zu bearbeiten, Also versuchten wir, auf InitializeCollectionEvent zu hören. Aber wie sich herausstellt, werden die meisten unserer Sammlungen mit HQL Fetch initialisiert, so dass dieses Ereignis für sie nicht ausgelöst wird.

Gibt es ein anderes Hibernate-Ereignis, das wir verwenden können?

Irgendein anderer Ort, an dem die Sammlungen nach dem Laden verarbeitet werden?

Wir verwenden Hibernate 4.1.7.

    
Nir 13.02.2017, 17:18
quelle

1 Antwort

1

Ich denke, es ist keine gute Idee, die Sammlung auf der Serverseite zu filtern, wenn die Sammlung geladen wurde. Wenn Sie das tun, bedeutet es, dass etw falsch geht, überdenken Sie das db-Modell oder die Entity-Struktur. Eine der besten Möglichkeiten zum Filtern der Sammlung - verwenden Sie HQL. Oder Sie können entweder verwenden @Where oder @Loader, @Filter.

    
idmitriev 15.02.2017 00:07
quelle