首先,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方法中的所有代码都是在事务中执行的。 –