Vra

Is daar 'n manier om 'n enkele kriteria op 'n vergadering fabriek (opset) vlak daaronder sal van toepassing wees op alle entites opgehaal met 'n Sessie voeg? Ons het 'n vereiste om nie enige rye uit ons databasis, maar "merk" geskrap entiteite as sodanig te verwyder, sodat hulle nie sal deelneem aan enige verdere operasies.

Ek weet dat ons net kan agter haal vir al entites deur 'n gemeenskaplike koppelvlak (bv 'n gemeenskaplike basis Dao voorwerp), maar die benadering met globale filter sal minder fout sensitiewe wees as dit nie die kennis van die gebruik van hierdie gemeenskaplike koppelvlak vereis .

Was dit nuttig?

Oplossing

Die Hibernate Dokumentasie brei uit oor hierdie 'n bietjie meer . Dit lyk soos die beste manier om te hanteer dit met filters.

In die eerste plek jy 'n fitler op 'n klas of versameling soos so definieer:

<filter-def name="IsDeletedFilter">
  <filter-param name="IsDeleted" type="bool"/>
</filter-def>

dit dan heg jy aan 'n klas of versameling:

<class/set  ...>
...
<filter name="IsDeletedFilter" condition=":IsDeleted = Is_Deleted"/>

Ag, jy moet dit doen met elke klas wat jy sagte geskrap wil. Maar jy kan in staat wees om die kaart uit 'n basis klas SoftDeleteEntity en 'n tafel per subklas hiërargie.

Ek het ook gesien dat sommige mense beweer dat hulle in staat wees om dit te doen met luisteraars, maar ek weet nie hoe.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top