@Transactional
 public void reverseTransaction(String txId) {
   BankingTx tx = aclBankingTxDao.findByTransactionID(txId);
   tx.setAmount(-tx.getAmount());
   tx.setDescription("Reversed: " + " amount = " + tx.getAmount() + " for " + tx.getDescription());
   tx.setTransactionId(Long.parseLong((new RandomID(9)).getId()));
   tx.setTransDate(new Timestamp(System.currentTimeMillis()));
   aclBankingTxDao.insert(tx);
   addPermission(tx, new PrincipalSid(getCustomerUsername(tx)), BasePermission.READ);
   addPermission(tx, new GrantedAuthoritySid("ROLE_REP"), BasePermission.ADMINISTRATION);
   addPermission(tx, new GrantedAuthoritySid("ROLE_REP"), BasePermission.DELETE);
 }