Это правило помечает файлы persistence.xml с целью предупредить пользователя об изменении поведения в OpenJPA, связанного с генерацией кода с помощью ListAttribute.
В случае миграции приложения, в котором не используется спецификация JPA 2.0, такой неполадки не будет. Если в приложении не используется API критериев или API метамодели из спецификации JPA 2.0, то такой неполадки не возникнет.
К приложениям, потенциально затрагиваемым данным изменением, относятся те, в которых напрямую используется типобезопасный API критериев JPA или API метамодели JPA. Примечание: данный API метамодели - часть спецификации JPA 2.0. Существует две версии WebSphere, включающие спецификацию JPA 2.0, в которых может возникнуть описанная выше неполадка. А именно:
В WebSphere 8.5 используется OpenJPA 2.2.0. В предыдущих выпусках (см. предыдущий абзац) ListAttribute генерировал реализацию метамодели OpenJPA для каждого массива. Это правильное поведение, если массив хранится как PersistentCollection, однако для массивов без аннотаций (например, byte [], char []) это неверно. В OpenJPA 2.2.0 это поведение было исправлено, так что массивы, не сохраненные как PersistentCollections, будут использовать SingularAttribute вместо ListAttribute.
Сохранить совместимость с предыдущими версиями можно, указав специальное свойство в файле persistence.xml. В частности, чтобы использовать код, который не был регенерирован, можно задать <property name="openjpa.Compatibility" value="UseListAttributeForArrays=true"/> в файле persistence.xml . Если среда приложения генерирует код метамодели, данная неполадка не возникнет, и настраивать это свойство нет необходимости. Новый код будет иметь правильное объявление. Но если приложение не генерирует код метамодели повторно, что может быть в случае, когда выполняется двоичная миграция, то можно воспользоваться этим свойством, чтобы сделать старый код работоспособным в новой среде.
В целях сохранения совместимости с предыдущими версиями задается системное свойство UseListAttributeForArrays=true во время преобразования конфигурации. Однако системное свойство для OpenJPA игнорируется, если оно уже указано в приложении. Данное правило уведомляет пользователя, когда установка системного свойства UseListAttributeForArrays игнорируется из-за параметра openjpa.Compatibility в файле persistence.xml.
Это правило помечает файлы persistence.xml, когда:
Когда автоматическое исправление для этого правила станет доступно, оно изменит UseListAttributeForArrays значение в openjpa.Compatibility свойство так, чтобы значение содержало value="UseListAttributeForArrays=true" .
Рекомендуется одно из следующих действий.
Дополнительная информация: