Pergunta

No meu banco de dados, tenho usuários e grupos de usuários que têm uma relação muitos para muitos. O usuário tem um conjunto de usergroup, o objeto de domínio do grupo de usuário não vê o usuário.

<class name="User" table="UserTable">
    <set name="UserGroup" cascade="save-update" access="field.pascalcase-underscore" table="User2UserGroup">
        <key column="User_Id" />
        <many-to-many class="UserGroup" column="UserGroup_Id" />
    </set>
    ...

O que estou tentando alcançar é o Nibernate excluir a correlação da tabela de junção quando excluo um usuário ou um grupo de usuários. Além disso, o usuário e o grupo são objetos filhos de, vamos chamá -lo de domínio. Domínio faz cascade="all-delete-orphans", então, quando um domínio é excluído, ele Desetam em cascata todos os seus usuários e grupos de usuários.

De volta à relação do grupo de usuário <->: se eu entendo corretamente, não posso usar nenhuma forma de cascata que envolva excluir, pois quero excluir a associação entre dois objetos e não o próprio objeto relacionado. (Um grupo não deve desaparecer, mesmo que seja órfão. E um usuário sem um grupo é uma coisa válida no meu mundo - ele apenas não tem direitos para fazer nada.)

Preciso olhar para eventos/interceptores? Ou posso fazer o que quero alcançar controlando o mapeamento?

Foi útil?

Solução

Se você estiver usando um banco de dados que suporta, não poderá definir a cascata no próprio banco de dados na forma de uma restrição de chave estrangeira?

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