第八章 将对象映射到 XML - 仅映射对象标识符

文章目录

  • [第八章 将对象映射到 XML - 仅映射对象标识符](#第八章 将对象映射到 XML - 仅映射对象标识符)
  • 仅映射对象标识符

第八章 将对象映射到 XML - 仅映射对象标识符

仅映射对象标识符

可以仅映射对象的标识符,而不是以默认方式映射对象值属性。为此,请对 XMLDEFAULTREFERENCE 类参数或 XMLREFERENCE 属性参数使用以下值之一:

  • "ID"选项仅映射对象的内部 ID(存储在磁盘上)。它不映射任何属性。例如,考虑以下类:
java 复制代码
Class xmlidentifiers.Person Extends (%Persistent, %XML.Adaptor)
{

Property Name As %String;

Property PrimaryCarePhysician As Person (XMLREFERENCE = "ID");

}

下面显示了此类实例的 XML 表示形式的示例:

xml 复制代码
<Person>
  <Name>Sam Smith</Name>
  <PrimaryCarePhysician>24</PrimaryCarePhysician>
</Person>
  • "OID"选项仅映射对象的 OID(如 package.class,ID)。它不映射任何属性。如果我们将此选项用于 PrimaryCarePhysician 属性,则前面的 Person 对象将按如下方式投影:
java 复制代码
<Person>
  <Name>Sam Smith</Name>
  <PrimaryCarePhysician>xmlidentifiers.Person,24</PrimaryCarePhysician>
</Person>
  • "GUID"选项仅映射对象的 GUID(Global唯一 ID)(如果可用)。除非 GUIDENABLED 类参数为 1,否则对象的 GUIDnull。假设我们按如下方式重新定义 Person 类:
java 复制代码
Class xmlidentifiers.Person Extends (%Persistent, %XML.Adaptor)
{

Parameter GUIDENABLED=1;

Property Name as %String;

Property PrimaryCarePhysician As Person (XMLREFERENCE = "GUID");

}

在这种情况下,此类实例的 XML 表示形式可能如下:

xml 复制代码
<Person>
  <Name>Sam Smith</Name>
  <PrimaryCarePhysician>D0F383EB-DB31-4C11-AD56-AA14EB37B734</PrimaryCarePhysician>
</Person>

注意:对于属性参数 XMLREFERENCE,仅当值是持久对象时才可以使用"ID"、"OID"和"GUID"选项。否则会收到编译时错误。

同样,如果将类参数 XMLDEFAULTREFERENCE 设置为"ID"、"OID"或"GUID",并且该类具有值为非持久对象的属性,则必须显式将属性参数 XMLREFERENCE 设置为"COMPLETE"或这些属性的"摘要"。

相关推荐
优橙教育1 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
SeaTunnel3 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
碎光拾影3 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Marst Code4 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python
Miao121314 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
CRMEB系统商城5 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
keyipatience6 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
我的xiaodoujiao6 小时前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
爱喝水的鱼丶7 小时前
SAP-ABAP:ALV通用封装实践——搭建可复用的ALV开发工具类,减少80%重复代码
开发语言·性能优化·sap·abap·erp·alv
脱胎换骨-军哥7 小时前
C++/Rust无缝互操作:混合系统新常态
开发语言·c++·rust