まず第一に、永続化ユニットを変更できないため、この解決策は私にとって選択肢ではありません。
私の問題は、JTA EntityManager を使用していることですが、トランザクションのようなユースケースが 1 つだけ必要です。
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);
}
保存呼び出しがあることがわかりますが、更新が失敗した場合、この保存をロールバックする必要があります。どうすればそれを達成できますか? 何か案は?