Question

Existe-t-il un moyen d’ajouter un critère unique au niveau d’une fabrique de session (configuration) qui s’appliquera à toutes les entités renvoyées avec une session? Nous devons impérativement ne supprimer aucune ligne de notre base de données, mais "marquer". les entités supprimées en tant que telles afin qu'elles ne participent à aucune autre opération.

Je sais que nous pouvons simplement récupérer toutes les entités via une interface commune (par exemple, un objet Dao de base commun), mais l'approche avec le filtrage global serait moins sujette aux erreurs car elle ne nécessite pas la connaissance de l'utilisation de cette interface commune. .

Était-ce utile?

La solution

La documentation d'Hibernate en fait un peu plus . Il semble que la meilleure solution consiste à utiliser les filtres.

Tout d'abord, vous définissez un fitler sur une classe ou une collection comme suit:

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

Ensuite, vous l'attachez à une classe ou à une collection:

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

Hélas, vous devez le faire avec toutes les classes que vous souhaitez supprimer par logiciel. Cependant, vous pourrez peut-être tracer une classe de base SoftDeleteEntity et créer une table par hiérarchie de sous-classes.

J'ai aussi vu des gens prétendre pouvoir faire cela avec des auditeurs, bien que je ne sache pas comment.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top