0

James and Tomas Mapping Oracle XMLType on JPA (EclipseLink)によると、XMLType フィールドは @Customizer と DescriptorCustomizer を使用して処理 (マッピングと永続化) されます。

私はこのアプローチにほとんど疑問を持っていません。

  1. xmlField 属性に @Column アノテーションが必要ないのはなぜですか?
  2. xmlField のマッピングにDescriptorCustomizerを使用する理由 これはフィールドをマッピングするためだけですか? または、そのフィールドを保持することもできますか?
  3. DirectToXMLTypeMappingはオブジェクト型に使用できますか? (参照してください: http://docs.oracle.com/cd/E15051_01/web.1111/b32441/relmapun.htm#CHDFIFEF )
  4. Tomas の投稿の時点で、その xmlField はどのように保持されますか? コールバック メソッドを記述する必要がありますか?

私の質問が無意味である場合は申し訳ありません。JPA (EclipseLink/Oracle Toplink) での XMLType フィールドのマッピングを理解するために、いくつかのリンクとドキュメントを提供してください。

4

1 に答える 1

0

XMLType は特殊な Oracle フィールド タイプであり、単純で基本的な JPA マッピングではうまく機能しないと思います。EclipseLink には、Oracle XMLType と Java String との間の変換を処理できるカスタム DirectToXMLTypeMapping タイプがあります。投稿した例では、カスタマイザーは最初に、「xmlField」属性の注釈によって作成された既存のマッピングを削除しています。これにより、追加された可能性のある @Column 情報が基本的に消去されます。次に、フィールドに必要なすべての情報を含む新しい DirectToXMLTypeMapping を追加するため、属性に注釈を使用する必要はありません。

または、@Column アノテーションとその他の設定を定義し、マッピングを削除するだけでなく、記述子から DatabaseMapping オブジェクトを取得し、そこから列名とその他の値を取得して、新しい DirectToXMLTypeMapping に入力することもできます。

マッピングは、エンティティの属性がデータベース フィールドにどのように関連するかを記述するものです。したがって、取得と挿入/更新を処理し、Java タイプとデータベース タイプの間で変換する必要があります。投稿したリンクでは、エンティティの xmlType 属性マッピングにより、永続化時に Java 文字列が Oracle XMLType に変換され、DB から読み戻すときに逆になります。

于 2013-09-25T16:24:44.250 に答える