Pergunta

O que o CascadeType.REFRESH realmente fazer?

A definição para isso é

Quando atualizar uma entidade todas as entidades detidas neste campo atualização também

Mas o que isso significa na prática? Alguém poderia me dar um exemplo simples?

Foi útil?

Solução

As descrições CascadeType individuais podem ser um pouco confuso, mas há uma maneira fácil de descobrir isso a partir do caso geral.

Para qualquer um dos valores CascadeType, isso significa que se X operação é chamada em uma instância usando a interface EntityManager, e que instância tem referências a outras instâncias da entidade, e que associação tem CascadeType.X definido, então a operação EntityManager também será aplicado a essa entidade associada.

Assim EntityManager.refresh() é definido como:

Atualize o estado da instância de o banco de dados, mudanças substituindo feita para a entidade, se houver.

Então, se a entidade A tem uma referência a entidade B, e que a referência é anotado com @CascadeType.REFRESH e EntityManager.refresh(A) é chamado, então EntityManager.refresh(B) é implicitamente chamado também.

Outras dicas

Retrieval por Refresh: Dirigido objetos pode ser recarregado a partir do banco de dados usando o método de atualização:

O conteúdo do objeto gerenciado na memória é descartada (incluindo alterações, se houver) e substituído por dados que são recuperados do banco de dados. Isto pode ser útil para garantir que o aplicativo lida com o mais versão atualizada de um objeto de entidade, apenas no caso que poderia ter sido alterado por outro EntityManager desde que foi recuperado.

Fonte: http://www.objectdb.com/java/jpa/persistence/ recuperar

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