首先,this解決方案不適合我,因爲我無法更改持久性單元。JPA:如何使用與JTA EntityManager進行交易?
我的問題是,我使用JTA EntityManager的,但我需要整整一個用例類似交易:
public boolean saveWithResult(PointsValidityPeriod pointsValidityPeriod)
{
//TODO use transaction here
super.save(pointsValidityPeriod);
if (updatePrevious(pointsValidityPeriod.getValidFrom()) != 1)
{
logger.error("Update of Period was not possible, because UPDATE returned no single result.");
return false;
}
pointsValidityPeriodEvent.fire(pointsValidityPeriod);
return true;
}
保存方法(我不能改變):
public void save(T entity)
{
getEntityManager().persist(entity);
}
你會看到,有一個保存調用,但是如果更新出錯,這個保存必須回退,那麼我該如何實現呢?有任何想法嗎?
JTA的重點在於管理交易。你在哪個環境中執行你的應用程序?具有EJB的應用程序服務器?然後使用EJB來劃分交易:這是他們的主要觀點。 –
是的,我們在JBoss中使用EJB。 – Bevor
默認情況下,EJB是事務性的。默認情況下,EJB方法中的所有代碼都是在事務中執行的。 –