我在項目中使用JavaEE7和容器管理的事務。雖然我有@Transactional批註方法,我得到「交易必須運行」異常。 代碼看起來如下:@Transactional註釋java.lang.IllegalArgumentException:事務必須正在運行
@Transactional(Transactional.TxType.MANDATORY)
public void myMethod(Project project) {
final ObjectIdentity objectId = new ObjectIdentityImpl(project);
final Sid sid = new PrincipalSid(SecurityContextHolder.getContext().getAuthentication());
final Permission p = BasePermission.ADMINISTRATION;
MutableAcl acl = null;
try {
List<Sid> sids = new ArrayList<>();
sids.add(sid);
acl = (MutableAcl) aclService.readAclById(objectId, sids);
} catch (Exception ex) {
acl = ((MutableAclService) aclService).createAcl(objectId); // This line causes exception
}
acl.insertAce(acl.getEntries().size(), p, sid, true);
aclService.updateAcl(acl);
}
缺什麼在此代碼,該交易不會開始?
親切的問候,
比拉爾
我認爲交易開始,但春天不知道。有一種在TransactionSynchronizationManager中註冊事務的方法.'TransactionSynchronizationManager.registerSynchronization(TransactionSynchronization synchronization)'。我認爲交易沒有註冊。 – bilal