2013-09-25 26 views
0

根據James和Tomas Mapping Oracle XMLType on JPA (EclipseLink),使用@Customizer和DescriptorCustomizer處理(映射和持久化)XMLType字段。JPA中的Xml類型映射(EclipseLink/Oracle Toplink)

我對這種方法幾乎沒有懷疑。

  1. 爲什麼xmlField屬性不需要@Column anotation?
  2. 爲什麼我們去DescriptorCustomizer用於映射xmlField?這僅用於映射字段?或者它也可以堅持這個領域?
  3. DirectToXMLTypeMapping可用於對象類型? (請參考:http://docs.oracle.com/cd/E15051_01/web.1111/b32441/relmapun.htm#CHDFIFEF
  4. 從Tomas開始,如何保持xmlField?需要編寫回調方法?

請說明一下。如果我的問題沒有意義,請聯繫我。 請提供一些鏈接和文檔以瞭解JPA(EclipseLink/Oracle Toplink)中的XMLType字段映射。

回答

0

XMLType是一種專門的Oracle字段類型,我猜測對於簡單的基本JPA映射並不適用。 EclipseLink具有自定義的DirectToXMLTypeMapping類型,可以處理Oracle XMLType與Java字符串的轉換。在您發佈的示例中,定製程序首先刪除通過「xmlField」屬性的註釋創建的現有映射。這基本上抹去了可能已經添加的任何@Column信息。然後它添加一個新的DirectToXMLTypeMapping,它包含該字段所需的所有信息,因此不需要在該屬性上使用註釋。

或者,您可以定義@Column註釋和任何其他設置,而不是僅僅刪除映射,您可以從描述符中獲取DatabaseMapping對象,並從中提取列名和其他值以填充新的DirectToXMLTypeMapping 。

映射是描述實體中的屬性如何與數據庫字段相關的內容。所以它應該處理檢索以及插入/更新,將其轉換爲/從java類型轉換爲/從數據庫類型轉換。在您發佈的鏈接中,實體的xmlType屬性映射會將Java字符串轉換爲保留的Oracle XMLType,並在從數據庫讀回時將其反轉。

+0

謝謝克里斯......好點。 –