我有一个要求,我在employee
存储库中有两个表ABC
和address_details
存储库中的XYZ
。
employee
的一列有address_details
的外键引用。
在这里,我primaryKey
address_details
和primaryKey
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}}?
答案 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);
}