@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); }