0
我需要在單個事務中更新多個表。如何包裝多個JPA EntityManager持久化/合併到單個事務中
目前,我在我的代碼的結構如下:
(僞代碼)
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。
您使用容器管理事務嗎?這可能有助於[鏈接](https://docs.oracle.com/javaee/5/tutorial/doc/bncij.html) – Thevenin
基本上只是將代碼放入具有活動事務的方法中。 – Thevenin
@Thevenin - 是的,容器管理(TomEE)。我還應該提到這發生在一個REST風格的Web服務調用中(澤西島)。這很重要嗎? –