在下面的代码片段中,我试图坚持两个实体 - Account和AccountDetails。我希望这是原子的。这意味着,Account和AccountDetails entites都应该保存在一个事务中。我无法实现它。
请注意,AccountDetails表使用外键(account.id)引用Account表。
如果我尝试将它们保留在同一个事务中,我会遇到死锁。否则,我需要两个不同会话的不同交易。
Account instance = (Account) transientInstance;
Set<AccountDetails> accountDetailses = instance.getAccountDetailses();
AccountsHomeFactory factory = AccountsHomeFactory.getInstance();
AccountDetailsHome accountDetailsDAO = (AccountDetailsHome) factory.getDAO("AccountDetails");
transaction.begin();
sessionFactory.getCurrentSession().persist(instance);
transaction.commit();
// get new session ands start the transaction.
transaction.begin();
for (AccountDetails accountDetails : accountDetailses) {
accountDetailsDAO.persist(accountDetails);
log.debug("persist successful");
}
log.debug("transaction commit");
transaction.commit();
问题: