0

我有一个要求,我employeeABC存储库和存储库address_details中有两个表XYZ

的一列employee具有对 的外键引用address_details

在这里,我有primaryKeyforaddress_details并且使用该primaryKey 引用我必须将我的数据插入到employee.

所以我的 RDF 是这样的:

RDF 1: (Repository1 : ABC)

<item-descriptor name=”employee” >
 <table name=”employee”&gt;
   <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>

RDF 2: (Repsitory2 : XYZ)

<item-descriptor name=”address” >
  <table name=”address_details”&gt;
    <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>

我将所有地址都存储在 table 中address_details。我必须映射employee到这些地址。

我在这里尝试的方法是先获取RepostoryItemof Address ,然后设置属性类型address并将employee其添加到employee表中。这行得通。

但是我想employee单独在一个调用中插入数据?

关于如何使用RepositoryItemor 来做到这一点的任何建议MutableRepositoryItem

4

1 回答 1

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);
}
于 2012-11-28T17:04:03.913 回答