Esta regra sinaliza os arquivos persistence.xml para avisar o usuário sobre uma mudança de comportamento no OpenJPA a respeito do código gerado usando ListAttribute.
Se você estiver migrando um aplicativo que não esteja usando a especificação JPA 2.0, não encontrará esse problema. Se o seu aplicativo não estiver usando a API de Critérios ou API de Metamodelo a partir da especificação JPA 2.0, então, você não encontrará esse problema.
O tipo de aplicativos que são potencialmente afetados por esta mudança são os aplicativos que utilizam a interface de API de Critérios JPA de tipo seguro ou a interface de API de Metamodelo JPA diretamente. Observe que esta API de Metamodelo foi apresentada como parte da especificação JPA 2.0. Há duas versões do WebSphere que incluem a especificação JPA 2.0 que exibem o problema descrito anteriormente. São elas:
O WebSphere v8.5 utiliza e envia OpenJPA 2.2.0. Nas liberações anteriores (veja a parágrafo anterior), a implementação MetaModel do OpenJPA gerava um ListAttribute para cada matriz. Esse comportamento estará correto se a matriz for armazenada como PersistentCollection, mas não estará correto para matrizes não anotadas (por exemplo, byte[], char[]). No OpenJPA 2.2.0 esse comportamento foi corrigido para que as matrizes que não são armazenados como PersistentCollections usem um SingularAttribute em vez de um ListAttribute.
Para manter a compatibilidade com versões anteriores, uma propriedade e o valor podem ser configurados no arquivo persistence.xml. Especificamente, para usar o código que não foi gerado novamente, é possível configurar <property name="openjpa.Compatibility" value="UseListAttributeForArrays=true"/> no arquivo persistence.xml .. Se o seu ambiente de aplicativo regenerar o seu código de metamodelo, então, você não terá esse problema e não será necessário usar essa propriedade. O código regenerado recentemente terá a declaração adequada. Porém, se o seu aplicativo não regenerar o código de metamodelo, o que pode ser o caso ao fazer uma migração binária, então, será possível usar essa propriedade para permitir que o antigo código gerado seja usado com o novo tempo de execução.
Para ajudar a manter a compatibilidade com versões anteriores, durante a transformação de configuração de uma propriedade de sistema, UseListAttributeForArrays=true será configurado. No entanto, uma propriedade do sistema para OpenJPA será ignorada se o aplicativo já a tiver configurado. Esta regra notifica o usuário quando a configuração da propriedade de sistema UseListAttributeForArrays será ignorada porque não pode substituir uma configuração existente de openjpa.Compatibility no arquivo persistence.xml.
Esta regra sinalizará os arquivos persistence.xml quando:
Quando a correção automática para essa regra estiver disponível, ela modificará o UseListAttributeForArrays no valor openjpa.Compatibility para que o valor contenha value="UseListAttributeForArrays=true" .
A ação recomendada é uma das seguintes.
Para obter mais informações consulte,