使用 OpenJPA 內容值,而不要使用 Kodo 專用內容值

WebLogic 使用 Kodo(而非 OpenJPA)進行其 JPA 1.0 提供者實作。 此規則會將 Kodo 專用內容值轉換成 OpenJPA。 此規則會偵測 Java 檔案中的 Kodo 專用內容值。 內容名稱和內容值必須是 字串 文字參數 put 方法。 內容名稱必須是第一個參數,索引鍵和內容值必須是第二個參數。 此規則只轉換內容值。 必要的話,個別規則會轉換內容名稱。

例如,會標示下列程式碼:
map.put("kodo.Log", "Remote=TRACE, SQL=TRACE");

map.put("kodo.Log", "SQL=TRACE");
自動修復會移除 Remote=TRACE 這個值,因為它不是有效的 OpenJPA 值。

下表顯示了可以轉換的值:
類別 說明
kodo.Log
  • 移除值 Configuration、Remote、Manage 和 Profile
  • 將 kodo.* 轉換成 openjpa.*
kodo.ConnectionFactoryProperties
  • 有效值為 QueryTimeout、PrettyPrint、PrettyPrintLineLength。
  • 移除所有其他值
kodo.ConnectionFactory2Properties
  • 有效值為 QueryTimeout、PrettyPrint、PrettyPrintLineLength。
  • 移除所有其他值
kodo.MetaDataFactory
  • 有效值為 jpa 或 org.apache.openjpa.persistence.PersistenceMetaDataFactory。
  • 移除所有其他值並將值設定為 jpa
kodo.LockManager
  • 將 kodo.* 轉換成 org.apache.openjpa.*
  • 別名保持相同。
kodo.OrphanedKeyAction
  • 將 kodo.* 轉換成 org.apache.openjpa.*
  • 別名保持相同。
kodo.SavepointManager
  • 將 kodo.* 轉換成 org.apache.openjpa.*
  • 別名保持相同。
kodo.Sequence
  • 將 kodo.* 轉換成 org.apache.openjpa.*
  • 別名保持相同。
kodo.DataCache
  • 只選取第一個快取項目。捨棄所有其他項目。
  • 如果第一個項目設為 tangosol、lru 或 gemfire,則值設為 'true'。
  • 如果第一個項目具有值,則會保留這些值。例如 true(CacheSize=100)。
  • 如果第一個項目為 false,則該值會保持 false。
kodo.QueryCompilationCache
  • 值 kodo.util.CacheMap 會轉換成 org.apache.openjpa.util.CacheMap。
  • 值 java.util.HashMap 會轉換成 org.apache.openjpa.lib.util.ConcurrentHash。
  • 別名保持相同。
kodo.jdbc.DBDictionary
  • 將 kodo.* 轉換成 org.apache.openjpa.*
  • 別名保持相同。
kodo.jdbc.SchemaFactory
  • 將 kodo.* 轉換成 org.apache.openjpa.*
  • 別名保持相同。
kodo.jdbc.MappingDefaults
  • 有效值是預設值。
kodo.ee.ManagedRuntime
  • 將 kodo.* 轉換成 org.apache.openjpa.*
  • 別名保持相同。

附註:WebSphere Traditional 8.5.5 版及 Liberty Web Profile 6.0 會使用 OpenJPA 進行其 JPA 2.0 實作。 WebSphere Traditional 9.0 版及 Liberty 的 Java EE 7 JPA 2.1 實作則會使用 EclipseLink。