0

根据 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 字段映射。

4

1 回答 1

0

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

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

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

于 2013-09-25T16:24:44.250 回答