"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como lidar com nós órfãos em JPA com CascadeType.ALL?

Como lidar com nós órfãos em JPA com CascadeType.ALL?

Publicado em 2024-11-04
Navegar:536

How to Handle Orphaned Nodes in JPA with CascadeType.ALL?

Nós órfãos em JPA com CascadeType.ALL

Apesar de empregar CascadeType.ALL do JPA, os nós órfãos persistem no banco de dados, dificultando a exclusão. Para resolver esse problema, existem várias abordagens, dependendo do provedor de persistência e da versão do JPA:

Configuração do Hibernate

Se estiver usando o Hibernate, defina explicitamente a anotação CascadeType.DELETE_ORPHAN em conjunto com JPA CascadeType.ALL:

@OneToMany(cascade = {CascadeType.ALL, CascadeType.DELETE_ORPHAN})
private List bikes;

Solução JPA (sem Hibernate)

Na ausência do Hibernate, exclua explicitamente os elementos filhos antes de remover o registro pai:

  1. Busque a linha principal a ser excluída.
  2. Busque os elementos filhos.
  3. Exclua todos os elementos filhos.
  4. Exclua a linha principal.
  5. Feche a sessão.

JPA 2.0

JPA 2.0 introduz o atributo orphanRemoval:

@OneToMany(mappedBy="foo", orphanRemoval=true)

Ao definir orphanRemoval como true, o JPA excluirá automaticamente os registros filhos órfãos quando a entidade pai for removida.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3