第八章 将对象映射到 XML - 仅映射对象标识符
仅映射对象标识符
可以仅映射对象的标识符,而不是以默认方式映射对象值属性。为此,请对 XMLDEFAULTREFERENCE
类参数或 XMLREFERENCE
属性参数使用以下值之一:
- “
ID
”选项仅映射对象的内部ID
(存储在磁盘上)。它不映射任何属性。例如,考虑以下类:
Class xmlidentifiers.Person Extends (%Persistent, %XML.Adaptor)
{
Property Name As %String;
Property PrimaryCarePhysician As Person (XMLREFERENCE = "ID");
}
下面显示了此类实例的 XML
表示形式的示例:
<Person>
<Name>Sam Smith</Name>
<PrimaryCarePhysician>24</PrimaryCarePhysician>
</Person>
- “
OID
”选项仅映射对象的OID
(如package.class,ID
)。它不映射任何属性。如果我们将此选项用于PrimaryCarePhysician
属性,则前面的Person
对象将按如下方式投影:
<Person>
<Name>Sam Smith</Name>
<PrimaryCarePhysician>xmlidentifiers.Person,24</PrimaryCarePhysician>
</Person>
- “
GUID
”选项仅映射对象的GUID
(Global唯一ID
)(如果可用)。除非GUIDENABLED
类参数为1
,否则对象的GUID
为null
。假设我们按如下方式重新定义Person
类:
Class xmlidentifiers.Person Extends (%Persistent, %XML.Adaptor)
{
Parameter GUIDENABLED=1;
Property Name as %String;
Property PrimaryCarePhysician As Person (XMLREFERENCE = "GUID");
}
在这种情况下,此类实例的 XML
表示形式可能如下:
<Person>
<Name>Sam Smith</Name>
<PrimaryCarePhysician>D0F383EB-DB31-4C11-AD56-AA14EB37B734</PrimaryCarePhysician>
</Person>
注意:对于属性参数 XMLREFERENCE
,仅当值是持久对象时才可以使用“ID
”、“OID
”和“GUID
”选项。否则会收到编译时错误。
同样,如果将类参数 XMLDEFAULTREFERENCE
设置为“ID
”、“OID
”或“GUID
”,并且该类具有值为非持久对象的属性,则必须显式将属性参数 XMLREFERENCE
设置为“COMPLETE
”或这些属性的“摘要”。