Ta reguła oznacza flagą pliki persistence.xml, aby ostrzec użytkownika o zmianie zachowania w OpenJPA dotyczącego kodu generowanego za pomocą ListAttribute.
W przypadku migrowania aplikacji, która nie korzysta ze specyfikacji JPA 2.0, problem ten nie wystąpi. Jeśli aplikacja nie korzysta z interfejsu API dla kryteriów ani interfejsu API metamodelu ze specyfikacji JPA 2.0, problem ten nie wystąpi.
Typem aplikacji, na które ta zmiana może wpłynąć, są te aplikacje, które korzystają z interfejsu API JPA dla kryteriów opartego na bezpiecznym typie lub korzystają bezpośrednio z interfejsu API JPA metamodelu. Należy zauważyć, że ten interfejs API metamodelu został wprowadzony jako część specyfikacji JPA 2.0. Istnieją dwie wersje produktu WebSphere uwzględniające specyfikację JPA 2.0, w której objawia się problem opisany wcześniej. Są to:
Produkt WebSphere 8.5 wykorzystuje i udostępnia specyfikację OpenJPA 2.2.0. W poprzednich wersjach (patrz poprzedni akapit) implementacja metamodelu OpenJPA generowała ListAttribute dla każdej tablicy. To zachowanie jest poprawne, jeśli tablica jest przechowywana jako PersistentCollection, ale nie jest poprawne w przypadku tablic bez adnotacji (np. byte[], char[]). W OpenJPA 2.2.0 to zachowanie zostało poprawione tak, że tablice, które nie są przechowywane jako PersistentCollections, będą używały SingularAttribute zamiast atrybutu ListAttribute.
Aby zachować kompatybilność wsteczną, właściwość i wartość można ustawić w pliku persistence.xml. W szczególności, aby użyć kodu, który nie został ponownie wygenerowany, można ustawić <property name="openjpa.Compatibility" value="UseListAttributeForArrays=true"/> w pliku persistence.xml . Jeśli środowisko aplikacji ponownie wygeneruje kod metamodelu, ten problem nie występuje i nie jest konieczne używanie tej właściwości. Nowo wygenerowany kod będzie miał odpowiednią deklarację. Jeśli jednak aplikacja nie wygeneruje ponownie kodu metamodelu, co może mieć miejsce w przypadku migracji binarnej, można użyć tej właściwości, aby umożliwić użycie starego wygenerowanego kodu z nowym środowiskiem wykonawczym.
Aby zapewnić kompatybilność wsteczną, podczas transformacji konfiguracji zostanie ustawiona właściwość systemowa UseListAttributeForArrays=true. Jednak właściwość systemowa dla specyfikacji OpenJPA jest ignorowana, jeśli jest ona już ustawiona w aplikacji. Ta reguła powiadamia użytkownika, gdy ustawienie właściwości systemowej UseListAttributeForArrays zostanie zignorowane, ponieważ nie może przesłonić istniejącego ustawienia openjpa.Compatibility w pliku persistence.xml.
Ta reguła oznaczy flagą pliki persistence.xml, gdy:
Gdy automatyczna poprawka dla tej reguły stanie się dostępna, zmodyfikuje ją UseListAttributeForArrays Wartość w openjpa.Compatibility właściwość tak, że wartość będzie zawierać value="UseListAttributeForArrays=true" .
Zalecane jest wykonanie jednej z poniższych czynności.
Dodatkowe informacje: