将数据插入ATG中的链接存储库

时间:2011-11-29 09:52:13

标签: atg

我有一个要求,我在employee存储库中有两个表ABCaddress_details存储库中的XYZ

employee的一列有address_details的外键引用。

在这里,我primaryKey address_detailsprimaryKey employee 参考我必须在ABC中插入我的数据。

所以我的RDF就是这样的:

RDF 1 :(存储库1:<item-descriptor name=”employee” > <table name=”employee”> <property name=”empId” data-type=”string” column-name=”emp_id” required=”true”/> <property name=”address” column-name=”address_id” item-type=”address” repository=”XYZ” required=”true”/> </table> </item-descriptor>

XYZ

RDF 2 :( Repsitory2:<item-descriptor name=”address” > <table name=”address_details”> <property name=”addressId” data-type=”string” column-name=”address_id”/> <property name=”streetName” column-name=”street_name” data-type=”string”/> <property name=”city” column-name=”city” data-type=”string” /> </table> </item-descriptor>

address_details

我将所有地址存储在表employee中。我必须这样做 将RepostoryItem映射到这些地址。

我在这里尝试的方法是获取Address address 首先,然后设置employee的属性类型employee并添加它 进入employee表。这很有效。

但我想单独在一个电话中插入RepositoryItem数据?

有关如何使用MutableRepositoryItem或 {{1}}?

1 个答案:

答案 0 :(得分:0)

通过插入一个调用,我假设你的意思是你想以原子方式提交所有插入。没有机制在一个SQL语句中执行多个插入 - 您必须为您创建的每个项调用一次MutableRepository.addItem()。以下代码将允许您将存储库工作包装在事务中,以便一次性提交所有数据。

TransactionManager tm = ...
TransactionDemarcation td = new TransactionDemarcation ();
try {
  try {
    td.begin(tm);

    // Create all items and call MutableRepository.addItem() for each of them.
  }
  finally {
    td.end();
  }
}
catch (TransactionDemarcationException exc) {
  logError(exc);
}