【问题标题】:Xml Type Mapping in JPA (EclipseLink/Oracle Toplink)JPA 中的 XML 类型映射 (EclipseLink/Oracle Toplink)
【发布时间】:2013-09-25 10:03:10
【问题描述】:

根据 James 和 Tomas Mapping Oracle XMLType on JPA (EclipseLink),使用 @Customizer 和 DescriptorCustomizer 处理(映射和持久化)XMLType 字段。

我对这种方法几乎没有任何疑问。

  1. 为什么 xmlField 属性不需要 @Column 注释?
  2. 为什么我们要使用 DescriptorCustomizer 来映射 xmlField?这仅用于映射字段?或者它也可以坚持那个领域?
  3. DirectToXMLTypeMapping可以用于Object类型吗? (请参考:http://docs.oracle.com/cd/E15051_01/web.1111/b32441/relmapun.htm#CHDFIFEF
  4. 从 Tomas 发布的那个 xmlField 将如何持续存在?需要编写回调方法吗?

请澄清一下。对不起,如果我的问题毫无意义。 请提供一些链接和文档以了解 JPA(EclipseLink/Oracle Toplink) 中的 XMLType 字段映射。

【问题讨论】:

    标签: java xml jpa eclipselink toplink


    【解决方案1】:

    XMLType 是一种专门的 Oracle 字段类型,我猜它不适用于简单的基本 JPA 映射。 EclipseLink 有一个自定义的 DirectToXMLTypeMapping 类型,可以处理 Oracle XMLType 与 java 字符串之间的转换。在您发布的示例中,定制器首先删除通过“xmlField”属性的注释创建的现有映射。这实质上会清除任何可能已添加的@Column 信息。然后它会添加一个新的 DirectToXMLTypeMapping,其中包含该字段所需的所有信息,因此无需在属性上使用注释。

    或者,您可以定义 @Column 注释和任何其他设置,而不是仅仅删除映射,您可以从描述符中获取 DatabaseMapping 对象并从中提取列名称和其他值以填充新的 DirectToXMLTypeMapping。

    映射是描述实体中的属性如何与数据库字段相关的东西。所以它应该处理检索以及插入/更新,将其转换为/从 java 类型转换为/从数据库类型转换。在您发布的链接中,实体的 xmlType 属性映射在持久化时将 Java 字符串转换为 Oracle XMLType,并在从数据库中读取时将其反转。

    【讨论】:

      猜你喜欢
      • 2011-04-27
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 2012-04-14
      • 2013-12-31
      • 2013-05-08
      相关资源
      最近更新 更多