Zkontrolovat změnu chování v generování kódu JPA MetaModel týkajícím se ListAttribute

Toto pravidlo označí soubory persistence.xml, aby uživatele upozornily na změnu chování v rozhraní OpenJPA v souvislosti s kódem generovaným pomocí parametru ListAttribute.

Pokud migrujete aplikaci, která nepoužívá specifikaci JPA 2.0, pak nezjistíte tento problém. Pokud vaše aplikace nepoužívá rozhraní Criteria API nebo Metamodel API ze specifikace JPA 2.0, pak nezjistíte tento problém.

Typy aplikací, které jsou potenciálně ovlivněny touto změnou, jsou ty aplikace, které používají rozhraní type-safe JPA Criteria API nebo rozhraní JPA Metamodel API přímo. Všimněte si, že toto rozhraní Metamodel API bylo zavedeno jako součást specifikace JPA 2.0. Jsou dvě verze serveru WebSphere, které zahrnují specifikaci JPA 2.0, která vykazuje problém popsaný dříve. Jedná se o:

WebSphere v8.5 využívá a expeduje OpenJPA 2.2.0. V předchozích vydáních (viz předchozí odstavec) Implementace MetaModel OpenJPA generovala ListAttribute pro každé pole. Toto chování je správné, pokud je pole uloženo jako PersistentCollection, ale není správné pro neanotovaná pole (např. byte[], char[]). V produktu OpenJPA 2.2.0 bylo toto chování opraveno, takže pole, která se neukládají jako PersistentCollections, budou místo ListAttribute používat SingularAttribute.

Chcete-li zachovat zpětnou kompatibilitu, lze vlastnost a hodnotu nastavit v souboru persistence.xml. Konkrétně, chcete-li použít kód, který nebyl znovu vygenerován, můžete nastavit <property name="openjpa.Compatibility" value="UseListAttributeForArrays=true"/> v souboru persistence.xml . Pokud vaše prostředí aplikace znovu vygeneruje kód metamodelu, pak se tento problém nezobrazí a tuto vlastnost nemusíte používat. Nově generovaný kód bude mít správnou deklaraci. Pokud však vaše aplikace negeneruje znovu kód metamodelu, což může být případ provádění binární migrace, pak lze touto vlastností umožnit použití starého generovaného kódu s novým běhovým prostředím.

Chcete-li pomoci při zachování zpětné kompatibility, bude během transformace konfigurace nastavena systémová vlastnost, UseListAttributeForArrays=true. Nicméně systémová vlastnost pro OpenJPA je ignorována, pokud aplikace již tuto sadu obsahuje. Toto pravidlo upozorňuje uživatele, že systémová vlastnost UseListAttributeForArrays bude ignorována, protože nemůže přepsat existující nastavení openjpa.Compatibility v souboru persistence.xml.

Toto pravidlo označí soubory persistence.xml v následujících případech:

Jakmile bude k dispozici automatická oprava tohoto pravidla, změní se UseListAttributeForArrays hodnota v poli openjpa.Compatibility vlastnost tak, aby hodnota obsahovala value="UseListAttributeForArrays=true" .

Doporučená akce je jedna z následujících možností.

Další informace viz