Diese Regel markiert Dateien "persistence.xml", um den Benutzer vor Änderungen des Verhaltens bei der Generierung von OpenJPA-Code mit ListAttribute zu warnen.
Wenn Sie eine Anwendung migrieren, die die JPA 2.0-Spezifikation nicht verwendet, tritt dieses Problem nicht auf. Wenn Ihre Anwendung die Criteria-API oder die Metamodel-API aus der JPA 2.0-Spezifikation nicht verwendet, tritt dieses Problem nicht auf.
Anwendungen, die von dieser Änderung potenziell betroffen sind, sind Anwendungen, die die typensichere JPA-API-Schnittstelle "Criteria" oder die JPA-API-Schnittstelle Metamodel direkt verwenden. Diese Metamodel-API wurde im Rahmen der Spezifikation JPA 2.0 eingeführt. Es gibt zwei Versionen von WebSphere, die die Spezifikation JPA 2.0 enthalten, die das zuvor beschriebene Problem zeigen. Diese lauten:
WebSphere Version 8.5 verwendet und liefert OpenJPA 2.2.0. In früheren Releases (siehe den vorherigen Absatz) wurde von der OpenJPA-MetaModel-Implementierung ein ListAttribute für jedes Array generiert. Dieses Verhalten ist korrekt, wenn das Array als PersistentCollection gespeichert wird, es gilt aber nicht für nicht annotierte Arrays (z. B. byte[], char[]). In OpenJPA 2.2.0 wurde dieses Verhalten korrigiert, sodass Arrays, die nicht als PersistentCollections gespeichert werden, ein SingularAttribute anstelle eines ListAttribute verwenden.
Zur Aufrechterhaltung der Abwärtskompatibilität können eine Eigenschaft und ein Wert in der Datei "persistence.xml" definiert werden. Um Code zu verwenden, der nicht neu generiert wurde, können Sie <property name="openjpa.Compatibility" value="UseListAttributeForArrays=true"/> in der Datei persistence.xml . Wenn Ihre Anwendungsumgebung den Metamodellcode neu generiert, tritt dieses Problem nicht auf, und Sie müssen diese Eigenschaft nich verwenden. Der neu generierte Code enthält die richtige Deklaration. Wenn Ihre Anwendung den Metamodellcode jedoch nicht neu generiert, was der Fall sein kann, wenn eine Migration der Binärdateien durchgeführt wird, können Sie diese Eigenschaft verwenden, damit der alte generierte Code in der neuen Laufzeitumgebung verwendet werden kann.
Zur Unterstützung der Abwärtskompatibilität wird während der Konfigurationsumsetzung eine Systemeigenschaft mit dem Namen "UseListAttributeForArrays=true" gesetzt. Eine Systemeigenschaft für OpenJPA wird jedoch ignoriert, wenn diese bereits in der Anwendung definiert ist. Diese Regel benachrichtigt den Benutzer, wenn die Definition der Systemeigenschaft "UseListAttributeForArrays" ignoriert wird, weil sie eine vorhandene Einstellung "openjpa.Compatibility" in der Datei "persistence.xml" nicht überschreiben kann.
Diese Regel markiert Dateien "persistence.xml", wenn
Wenn die automatische Korrektur für diese Regel verfügbar ist, wird sie die UseListAttributeForArrays Wert in der openjpa.Compatibility Eigenschaft, so dass der Wert value="UseListAttributeForArrays=true" .
Eine der folgenden Aktionen wird empfohlen:
Weitere Informationen finden Sie unter: