文章
· 十二月 18, 2023 阅读大约需 2 分钟

第三十九章 其他特殊主题 - 映射 IRIS ID 以供导出

第三十九章 其他特殊主题 - 映射 IRIS ID 以供导出

当在顶层映射 IRIS 对象(而不是作为另一个对象的属性)时,其内部 IDOID 和全局唯一 ID 不能用作对象属性,因此不会映射这些 ID。但是,在某些情况下,可能希望使用对象 ID 作为唯一标识符。然后,例如,可以在更新存储的对象之前将传入(已更改)的对象与相应的存储对象进行匹配。

IRIS XML 支持提供了多个帮助程序类,可用于将 IRIS 对象标识符投影到 XML 文档: %XML.Id 中(对于内部 ID)、%XML.Oid(对于 ``)和 %XML.GUID(用于全局唯一 ID)。

要使用这些类,请向支持 XML 的类添加一个特殊属性,该属性的用途是包含要导出的 ID。该属性的类型必须为 %XML.Id%XML.Oid%XML.GUID。确保该属性已映射,并将其标记为瞬态,以便它不包含在该类的 SQL 映射中。

当导出到 XML 时,将支持 XML 的类的对象带入内存。当对象位于内存中时,添加的特殊属性将从 IRIS 内部存储中检索请求的 ID 并包含该值(以便您可以导出它)。

例如,考虑以下类:

Class MyApp4.Obj.Person4 Extends (%Persistent,%Populate,%XML.Adaptor) 
{

Property IdForExport As %XML.Id 
(XMLNAME="IRISID", XMLPROJECTION="ELEMENT") [Private, Transient];

Property Name As %Name;

Property DOB As %Date(FORMAT = 5, MAXVAL = "+$h");

}

在此类中,特殊属性是 IdForExport。该属性专门用 IRISIDXML 元素名称进行映射。

该类的示例输出如下:

<?xml version="1.0" encoding="UTF-8"?>
<Root>
   <Person>
      <IRISID>1</IRISID>
      <Name>Marks,Jules F.</Name>
      <DOB>1989-04-02</DOB>
   </Person>
   <Person>
      <IRISID>2</IRISID>
      <Name>Palmer,Angelo O.</Name>
      <DOB>1937-11-15</DOB>
   </Person>
...

控制导出时的命名空间前缀

当为对象生成 XML 输出时,系统会根据需要生成命名空间前缀,但可以根据需要指定前缀。为此,请在支持 XML 的对象的类定义中设置以下参数:

XMLPREFIX

指定与此类的命名空间关联的前缀。

讨论 (0)1
登录或注册以继续