我有兩個表所示:JPA /休眠:生成特定於交易的交易ID和設置成JPA父/子實體
User [ UserId, FirstName, LastName, AddressId (#FK), UITransactionId ]
Address [ AddressId, city, state, UITransactionId]
UITransactionId是捕捉特定交易的變化。例如,我有一個添加頁面,可以填寫用戶的名字,姓氏和地址。如果我保存下面的用戶記錄將被添加到表中。
User [ U1, Narendra, Verma , A1 , 1234 ]
Address [ A1, Pune, MH, 1234]
的UITransactionId「1234」可以被視爲事務ID和登錄到兩個表作爲用戶信息和地址被保存爲一個事務。現在
如果我更新的用戶名和地址:
User [ U1, NarendraEdit, Verma , A1 , 1255]
Address [ A1, PuneEdit, MH, 1255]
的變化在兩個表單事務中的這一次「1255」標識將代表。
現在,如果我改變的唯一地址,並保存用戶信息:
User [ U1, Narendra, Verma , A1 , 1255 ]
Address [ A1, Pune, MHEdit, 1295] //Only this table is updated
這次「1295」應該只投資於地址表,becase的我們還沒有更新的用戶信息,但只有地址。
其他方式我可以生成特定於JPA事務的事務ID並設置爲JPA父/子實體?
@Transactional(readOnly = false, isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class })
public void saveUser(UserVO userVO) {
// Setting transaction Id into User/Address Entity
// Call dao layer to save/update entity
}
有同時進行交易,並明確設置爲每個實體,同時節省/更新特定的實體,我可以生成服務的隨機數的方法之一。但是這種方法需要在每個地方爲每個實體設置UITransactionId。有沒有適當的方法來實現這一點?