ListAttribute와 관련된 JPA 메타 모델 코드 생성의 동작 변경 확인

이 규칙은 ListAttribute를 사용하여 생성한 코드와 관련된 OpenJPA의 동작 변경을 사용자에게 경고하도록 persistence.xml 파일에 플래그를 지정합니다.

JPA 2.0 스펙을 사용하지 않는 애플리케이션을 마이그레이션하는 경우에는 이러한 문제점이 발생하지 않습니다. JPA 2.0 스펙의 기준 API 또는 메타 모델 API를 사용하지 않는 애플리케이션의 경우 이 문제점이 발생하지 않습니다.

이러한 변경에 영향을 받을 수 있는 애플리케이션 유형은 묵시적 유형 변환이 허용되지 않는 JPA 기준 API 인터페이스나 JPA 메타 모델 API 인터페이스를 직접 활용하는 애플리케이션입니다. 이 메타 모델 API는 JPA 2.0 스펙의 일부로서 도입되었습니다. 앞에서 설명한 문제점이 나타나는 JPA 2.0 스펙이 포함된 WebSphere 버전은 두 가지가 있습니다. 이러한 WebSphere 버전은 다음과 같습니다.

WebSphere v8.5는 OpenJPA 2.2.0을 사용하고 이와 함께 출시됩니다. 이전 릴리스(앞의 단락 참조)에서는 OpenJPA의 메타 모델 구현 과정에서 모든 배열에 대해 ListAttribute를 생성했습니다. 이 동작은 배열이 PersistentCollection으로 저장된 경우 정확하지만 어노테이션이 없는 배열(예: byte[], char[])에는 올바르지 않습니다. OpenJPA 2.2.0에서는 PersistentCollection으로 저장되지 않은 배열이 ListAttribute 대신 SingularAttribute를 사용하도록 이 동작이 수정되었습니다.

역방향 호환성을 유지하려면 persistence.xml 파일에 특성과 값을 설정해야 합니다. 특히, 재생성되지 않은 코드를 사용하려면 다음을 설정할 수 있습니다. <property name="openjpa.Compatibility" value="UseListAttributeForArrays=true"/> persistence.xml 파일에서. 애플리케이션 환경이 메타 모델 코드를 다시 생성하는 경우 이 문제점이 발생하지 않으므로 이 특성을 사용할 필요가 없습니다. 새로 재생성된 코드에는 올바른 선언이 포함되어 있습니다. 그러나 애플리케이션이 메타 모델 코드를 다시 생성하지 않는 경우(2진 마이그레이션 실행 중에 발생할 수 있음) 이 특성을 사용하여 이전에 생성된 코드를 새 런타임에서 사용할 수 있습니다.

역방향 호환성을 유지하는 데 도움이 되도록 구성 변환 과정에서 시스템 특성 'UseListAttributeForArrays=true'를 설정하게 됩니다. 그러나 애플리케이션에 이미 이 특성이 설정되어 있는 경우에는 OpenJPA의 시스템 특성이 무시됩니다. UseListAttributeForArrays 시스템 특성이 persistence.xml에 있는 기존의 openjpa.Compatibility 설정을 대체할 수 없기 때문에 이 시스템 특성이 무시된다는 점을 이 규칙이 사용자에게 알립니다.

이 규칙은 다음과 같은 경우에 persistence.xml 파일을 플래그 지정합니다.

이 규칙에 대한 자동 수정이 적용되면 이 규칙은 UseListAttributeForArrays openjpa.Compatibility 값이 다음을 포함하도록 특성을 지정하십시오. value="UseListAttributeForArrays=true" .

다음 조치 중 하나를 권장합니다.

자세한 정보는 다음 링크를 참조하십시오.