2
請參閱我的以下代碼片段。@Transactional不執行提交
@Transactional
public void saveMembersService(List<Member> list1, List<Member> list2)
{
saveMembersDAO(list1); // does not perform commit. Why?
saveMembersDAO(list2); // does not perform commit. Why?
} // does perform commit only here!
@PersistenceContext
private EntityManager em;
@Transactional
public void saveMembersDAO(List<Member> members)
throws HibernateException
{
Iterator<Member> it = members.iterator();
while (it.hasNext())
{
Member wsBean = it.next();
em.persist(wsBean); // overall commit will be made after method exit
}
}
我使用MySQL作爲數據庫。我在上面的方法執行後觀察MySql日誌。但是我只能看到單個提交後saveMembersService方法執行。我期望看到爲每個事務性方法調用提供兩個提交。我錯在哪裏?
UPDATE 1:對不起,我忘了添加@Transactional到我的服務方法。現在固定
更新2:我已經與Propagation.REQUIRES_NEW屬性檢查DAO - 結果是相同的(具有和與出@Transactional在提供服務的方法)
請參閱我的更新。 –
其實我已經檢查了DAO的Propagation.REQUIRES_NEW屬性 - 結果是一樣的(在服務方法下使用@Transactional) –
你還只有一次提交嗎? –