Pergunta

Existe uma maneira de adicionar um único critério em uma fábrica de sessão nível (configuração) os quais se aplicam a todas entites retreived com uma sessão? Temos a obrigação de não excluir quaisquer linhas de nosso banco de dados, mas "marca" excluído entidades, como tal, de modo que eles não vão participar de quaisquer outras operações.

Eu sei que nós podemos apenas retrive todos entites através de uma interface comum (por exemplo, uma base comum de objetos DAO), mas a abordagem com a filtragem global seria menos propenso a erros, uma vez que não requer o conhecimento do uso dessa interface comum .

Foi útil?

Solução

elabora a documentação Hibernate sobre isso um pouco mais . Parece que a melhor maneira de lidar com isso é com filtros.

Primeiro, você define uma fitler em uma classe ou coleção assim:

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

Então você anexá-lo a uma classe ou coleção:

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

Infelizmente, você deve fazer isso com cada classe que você deseja soft-excluído. Mas você pode ser capaz de traçar um SoftDeleteEntity classe base e tem uma tabela por hierarquia de subclasse.

Eu também vi algumas pessoas afirmam ser capaz de fazer isso com os ouvintes, embora eu não sei como.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top