EZ a szabály a persistence.xml fájlokat megjelölve figyelmezteti a felhasználót a ListAttribute elem használatával előállított OpenJPA-t érintő kód viselkedésváltozására.
Ha olyan alkalmazást állít át, amely nem használja a JPA 2.0 előírást, akkor nem fog ezzel a problémával találkozni. Ha alkalmazása nem használja a JPA 2.0 előírás Feltételek API vagy Metamodell alkalmazásprogramozási felületét, akkor nem fog ezzel a problémával találkozni.
A változás által potenciálisan érintett alkalmazások azok az alkalmazások, amelyek közvetlenül a típusbiztos JPA feltételek API vagy JPA Metamodell API felületet használják. Megjegyzés: a Metamodell API a JPA 2.0 előírás részeként került bevezetésre. Két olyan WebSphere változat van, amelyek a korábban leírt problémát produkáló JPA 2.0 előírást tartalmazzák. Ezek a következők:
A WebSphere v8.5 az OpenJPA 2.2.0 változatát használja és azzal is kerül szállításra. A korábbi kiadásokban (lásd az előző bekezdést) az OpenJPA MetaModel megvalósítása minden tömbhöz előállított ListAttribute elemet. Ez a viselkedés akkor helyes, ha a tömb PersistentCollection gyűjteményként van tárolva, de nem megfelelő az annotációval ellátott tömbök esetén (pl. byte [], char []). Az OpenJPA 2.2.0 változatban ezt a viselkedést kijavították, hogy a nem PersistentCollections gyűjteményként tárolt tömbök egy SingularAttribute attribútumot használjanak a ListAttribute helyett.
A visszamenőleges kompatibilitás fenntartás érdekében a persistence.xml fájlban be lehet állítani egy tulajdonságot és egy értéket. Kifejezetten a nem regenerált kód használatára állítható be <property name="openjpa.Compatibility" value="UseListAttributeForArrays=true"/> A persistence.xml fájlban. Ha az alkalmazás környezete újraelőállítja a metamodell kódot, akkor nem fogja ezt a problémát tapasztalni és nem kell a tulajdonságot használnia. Az újonnan előállított kód tartalmazni fogja a megfelelő deklarációt. Ha azonban az alkalmazás nem állítja elő újra a metamodell kódot, akkor ezzel a tulajdonsággal engedélyezheti a régebben előállított kód használatát az új futási környezettel.
A visszamenőleges kompatibilitás fenntartásának elősegítése érdekében a konfiguráció átalakítása során a UseListAttributeForArrays=true rendszertulajdonság kerül beállításra. A OpenJPA rendszertulajdonsága azonban figyelmen kívül marad, ha az alkalmazás már beállította azt. Ez a szabály értesíti a felhasználót, ha a UseListAttributeForArrays rendszertulajdonság beállítása figyelmen kívül marad, mert ez felülbírálhat egy meglévő openjpa.Compatibility beállítást a persistence.xml fájlban.
A szabály akkor jelöli meg a persistence.xml fájlt, ha:
Amikor a szabály automatikus javítása elérhetővé válik, a szabály módosítani fogja a UseListAttributeForArrays érték a termékben openjpa.Compatibility Tulajdonság, hogy az érték tartalmazni fogja value="UseListAttributeForArrays=true" .
A javasolt teendő az alábbiak valamelyike.
További információk: