Questa regola contrassegna i file persistence.xml per indicare all'utente una modifica del comportamento in OpenJPA relativa al codice generato utilizzando ListAttribute.
Se si sta migrando un'applicazione che non utilizza la specifica JPA 2.0, questo problema non verrà rilevato. Se la propria applicazione non utilizza l'API Criteria o l'API Metamodel dalla specifica JPA 2.0, questo problema non verrà rilevato.
Il tipo di applicazioni potenzialmente interessate da questa modifica sono quelle che utilizzano direttamente l'interfaccia dell'API Criteria JPA o l'interfaccia API Metamodel JPA type-safe. Notare che tale API Metamodel è stata introdotta come parte della specifica JPA 2.0. Esistono due versioni di WebSphere che includono la specifica JPA 2.0 che mostra il problema descritto in precedenza. Sono:
WebSphere v8.5 utilizza e fornisce OpenJPA 2.2.0. Nelle release precedenti (consultare il paragrafo precedente) l'implementazione di Metamodel di OpenJPA generava un ListAttribute per ciascun array. Questo comportamento è corretto se l'array è memorizzato come PersistentCollection, ma non è corretto per array non annotati (ad esempio, byte[], char[]). In OpenJPA 2.2.0 questo comportamento è stato modificato in modo che gli array non memorizzati come PersistentCollections utilizzeranno SingularAttribute invece di ListAttribute.
Per conservare la compatibilità con le versioni precedenti, è possibile impostare una proprietà ed un valore nel file persistence.xml. In particolare, per utilizzare il codice che non è stato rigenerato è possibile impostare <property name="openjpa.Compatibility" value="UseListAttributeForArrays=true"/> nel file persistence.xml . Se l'ambiente dell'applicazione rigenera il codice metamodel, questo problema non verrà rilevato e non è necessario utilizzare questa proprietà. Il codice appena rigenerato avrà la dichiarazione appropriata. Tuttavia, se l'applicazione non rigenera il codice metamodel, come potrebbe capitare durante l'esecuzione di una migrazione binaria, è possibile utilizzare questa proprietà per consentire l'utilizzo del codice generato con il nuovo runtime.
Per fornire assistenza per il mantenimento della compatibilità con le versioni precedenti, durante la conversione della configurazione verrà impostata una proprietà di sistema, UseListAttributeForArrays=true. Tuttavia, una proprietà di sistema per OpenJPA viene ignorata se già impostata nell'applicazione. Questa regola indica all'utente quando l'impostazione della proprietà di sistema UseListAttributeForArrays verrà ignorata perché non può sovrascrivere un'impostazione openjpa.Compatibility esistente nel file persistence.xml.
Questa regola contrassegna i file persistence.xml quando:
Quando sarà disponibile la correzione automatica per questa regola, essa modificherà l'opzione UseListAttributeForArrays valore nel openjpa.Compatibility in modo che il valore conterrà value="UseListAttributeForArrays=true" .
È consigliata una delle azioni riportate di seguito.
Per ulteriori informazioni, consultare