如何将多个JPA EntityManager保持/合并到单个事务中

时间:2015-11-05 17:26:59

标签: java hibernate jpa

我需要在一次交易中更新几个表。

目前,我的代码中有以下结构:

(伪代码)

process(updateList, mainObject);  // returns list of objects and main business object to persist/update
persistTable1(mainObject);  // table 1

int objectIndex = 0;
while(objectIndex < updateList.size()) {
    persistTable2(updateList[objectIndex]); // table 2
    objectIndex++;
}

问题: 如何将persistTable1(总是会被调用一次 - 无论如何)和persistTable2调用(将被调用0到n次)包装到单个事务中,这样如果任何持久化/合并失败,那么一切都会得到回滚?

持久化/更新代码正在使用JPA EntityManager。

1 个答案:

答案 0 :(得分:0)

您可以在方法调用者中使用事务上下文。

@Transactional(propagation = Propagation.REQUIRES_NEW)