Essa regra sinaliza projetos JPA que definem entidades JPA com relacionamentos usando uma estratégia em cascata de PERSIST, MERGE ou ALL para fazer com que você saiba de uma mudança de comportamento padrão na implementação do JPA 2.0 no WebSphere Application Server V8.5 e no Liberty. Antes da Versão 8.5, ao dispor em cascata uma persistência, o banco de dados era verificado para ver se a entidade já existia. O novo comportamento padrão é não verificar primeiro e lançar uma exceção de persistência "Chave de entidade já existente" se a entidade já estiver no banco de dados. O benefício da mudança de comportamento é melhorar o desempenho evitando trips extras no banco de dados.
Não é esperado que essa mudança de comportamento afete a maioria dos aplicativos. Para tirar proveito do novo comportamento, é possível primeiro tentar o aplicativo no ambiente da Versão 8.5 antes de fazer mudanças de código ou reverter para o comportamento anterior.
Se você realmente tiver problemas ou se souber que seu aplicativo
foi escrito para esperar que a operação de persistência examinasse primeiro o banco de dados
para as novas entidades e não manipular a nova exceção de persistência possível,
será possível reverter para o comportamento anterior, configurando a propriedade
openjpa.Compatibility no persistence.xml:
A propriedade também pode ser configurada como uma propriedade de sistema JVM do servidor, se não desejar alterar o aplicativo.
Existe uma regra Java e uma regra XML associada ao problema do aplicativo em potencial para ajudar a aumentar o seu entendimento. Apenas um resultado será sinalizado por projeto, mesmo se a persistência em cascata tiver definido várias casas. Isso lhe fornece a oportunidade de avaliar o aplicativo inteiro para esse problema.
Em específico, você deve avaliar as chamadas para as operações persist e merge
de EntityManager, se esse código manipular a mudança de comportamento corretamente.
Depois
de avaliar o seu aplicativo, será possível desligar essa regra em sua configuração de
análise ou ignorar os resultados gerados.
A regra Java sinalizará qualquer uma das estratégias em cascata a seguir definidas em uma anotação de relacionamento:
Por exemplo, os tipos de cascata serão sinalizados nas anotações de relacionamento como
@OneToOne.
A regra XML sinalizará quaisquer das estratégias em cascata a seguir definidas para uma entidade em um arquivo orm.xml:
Se encontrar quaisquer desses itens sinalizados, você deve avaliar o código que está chamando
merge ou persist em uma entidade usando um estilo de cascata de
persistência ou mesclagem. Se o código do aplicativo espera que o banco de dados seja marcado
primeiro antes de inserir uma nova entidade, o aplicativo poderia apresentar uma mudança de comportamento.
Se você incluir a propriedade openjpa.Compatibility em persistence.xml,
execute sua análise novamente para assegurar que não possui novos resultados na regra relacionada
Verificar uma mudança de comportamento na geração de código JPA MetaModel referente a ListAttribute.
Para obter informações adicionais,