我有两张桌子,例如:
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”ID 将表示为在两个表中都使用单个事务进行了更改。
现在如果我更改唯一的地址并保存用户信息:
User [ U1, Narendra, Verma , A1 , 1255 ]
Address [ A1, Pune, MHEdit, 1295] //Only this table is updated
这次'1295'应该只进入地址表,因为我们没有更新用户信息而只有地址。
有什么方法可以生成特定于 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。有没有适当的方法来实现这一目标?