Esta regla marca los archivos persistence.xml para avisar al usuario de un cambio de comportamiento en OpenJPA relacionado con el código generado mediante ListAttribute.
Si está migrando una aplicación que no utiliza la especificación JPA 2.0, no sufrirá este problema. Si la aplicación no está utilizando la API de Criteria o la API de Metamodel desde la especificación JPA 2.0, no se encontrará este problema.
El tipo de aplicaciones que pueden verse afectadas por este cambio son aquellas que utilizan la interfaz de API de JPA Criteria de tipo seguro o la interfaz de API de JPA MetaModel directamente. Tenga en cuenta que esta API de MetaModel se ha introducido como parte de la especificación JPA 2.0. Hay dos versiones de WebSphere que incluyen la especificación JPA 2.0 que exhibe el problema descrito anteriormente. Son:
WebSphere v8.5 utiliza y proporciona OpenJPA 2.2.0. En releases anteriores (consulte el párrafo anterior) la implementación de MetaModel de OpenJPA generaba un ListAttribute para cada matriz. Este comportamiento es correcto si la matriz está almacenada como PersistentCollection, pero no es correcta para las matrices no anotadas (por ejemplo, byte [], char []). En OpenJPA 2.2.0 este comportamiento se ha corregido de forma que las matrices que no estén almacenadas como PersistentCollections utilizarán un SingularAttribute en lugar de un ListAttribute.
Para mantener la compatibilidad con versiones anteriores, pueden establecerse una propiedad y un valor en el archivo persistence.xml. Específicamente, para utilizar código que no se ha regenerado, puede establecer <property name="openjpa.Compatibility" value="UseListAttributeForArrays=true"/> en el archivo persistence.xml . Si el entorno de la aplicación vuelve a generar el código de metamodelo, no tendrá este problema y no será necesario utilizar esta propiedad. El código que se acabe de volver a crear tendrá la declaración correcta. Sin embargo, si la aplicación no vuelve a generar el código de metamodelo, lo que podría suceder al realizar una migración binaria, puede utilizar esta propiedad para permitir que el código generado anterior se utilice con la nueva ejecución.
Para ayudarle a mantener la compatibilidad con versiones anteriores, durante la transformación de configuración, se establecerá una propiedad del sistema UseListAttributeForArrays=true. No obstante, una propiedad del sistema para OpenJPA se ignora si la aplicación ya la ha establecido. Esta regla notifica al usuario cuándo se ignorará el establecimiento de la propiedad del sistema UseListAttributeForArrays porque no puede alterar temporalmente un valor openjpa.Compatibility existente en el archivo persistence.xml.
Esta regla marcará los archivos persistence.xml cuando:
Cuando esté disponible la corrección automatizada de esta regla, se modificará la regla UseListAttributeForArrays valor en el openjpa.Compatibility para que el valor contenga value="UseListAttributeForArrays=true" .
La acción recomendada es una de las siguientes.
Para obtener más información, consulte: