我正在使用 JPA 处理 JBOSS 中的实体。一个实体将由多个线程在各种事务中更新。我在我的实体中添加了@Version 属性,并且在更新实体之前我正在获取 OptimisticLock。我无法处理异常并重试事务失败。
实体是
@Entity
public class DataEntity
{
@Id
int id;
long count;
@Version
int versionAttribute;
....
....
更新实体的代码是
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void updateEntity()
{
DataEntity d=entityManager.find(DataEntity.class,0,LockModeType.OPTIMISTIC);
d.setCount(d.getCount()+1);
}
如您所见,方法 updateEntity() 使用 TransactionAttributeType.REQUIRES_NEW 来进行新事务。这里的事务是容器管理的。所以在抛出 OptimisticLockingException 时帮助我重试。
在哪里处理异常?/在哪里写重试逻辑?