Pregunta

¿Hay una manera de agregar un solo criterio en un nivel de fábrica de sesión (configuración) que se aplicará a todos los sitios recibidos con una sesión? Tenemos el requisito de no eliminar ninguna fila de nuestra base de datos, pero " marcar " Entidades eliminadas como tales para que no participen en ninguna otra operación.

Sé que podemos recuperar todos los entits a través de una interfaz común (por ejemplo, un objeto Dao base común), pero el enfoque con filtrado global sería menos propenso a errores, ya que no requiere el conocimiento del uso de esta interfaz común. .

¿Fue útil?

Solución

La Documentación de Hibernate explica esto un poco más . Parece que la mejor manera de manejar esto es con los filtros.

En primer lugar, defina un fitler en una clase o colección como tal:

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

Luego lo adjuntas a una clase o colección:

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

Por desgracia, debes hacer esto con todas las clases que desees que se borren por software. Pero es posible que pueda asignar una clase base SoftDeleteEntity y tener una tabla por jerarquía de subclases.

También he visto a algunas personas decir que pueden hacer esto con los oyentes, aunque no sé cómo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top