7 Stimmen

NHibernate-Filter funktionieren nicht mit Session.Get

Ich versuche, ein weich löschbares Repository zu implementieren. Normalerweise lässt sich dies leicht mit einem Delete Event Listener realisieren. Um die gelöschten Entitäten herauszufiltern, kann ich eine Wo Attribut zu meiner Klassenzuordnung. Ich muss jedoch auch zwei weitere Methoden im Repository für diese Entität implementieren: Wiederherstellen y Bereinigen . Wiederherstellen wird Entitäten "ungelöscht" und Bereinigen wird sie hart gelöscht. Das bedeutet, dass ich das Where-Attribut nicht verwenden kann (da es weich gelöschte Entitäten für jeden Zugriff sperrt).

Ich habe es mit filtert stattdessen. Ich kann einen Filter erstellen und ihn in der Sitzung aktivieren oder deaktivieren, um das gleiche Ergebnis zu erzielen. Das Problem ist jedoch, dass Filter keine Auswirkungen auf die Methode Session.Get haben (sie wirken sich nur auf den ICriteria-basierten Zugriff aus).

Haben Sie eine Idee, wie Sie dieses Problem lösen können?

Danke

0 Stimmen

Haben Sie jemals eine Lösung für dieses Problem gefunden?

0 Stimmen

Nö. Filter funktionieren nicht bei Get. Sie wirken sich nur auf Kriterien aus. Ich musste einen anderen Ansatz für das Basis-Repository nur für "Get" implementieren und Filter die anderen Anwendungsfälle behandeln lassen.

2voto

Peter Punkte 26984

Zitat von Fabio Maulo:

Filter funktionieren nicht mit Get oder Load, da sie bedeuten: Ich will die Entität mit dieser ID laden.

Dynamische Filter arbeiten mit HQL/Criteria und Collection (sofern aktiviert) für eine Collection) nur, wenn Sie explizite Joins verwenden oder, allgemeiner, wenn wenn der QuerySpace eines Filters mit dem QuerySpace einer Abfrage übereinstimmt.

0voto

Bruno Lopes Punkte 2847

Würde ein Interceptor für diese Aufgabe geeignet sein?

Wenn ich mir den EmptyInterceptor ansehe, stelle ich fest, dass er ein OnLoad hat, das man meiner Meinung nach verwenden könnte, um das Laden des Objekts abzufangen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X