Boa tarde pessoal, salve a sexta feira
Pessoal, estou com um problema com as minhas transactions
Tenho um EJB
EmpresaDao
@Stateless
public class EmpresaDao extends AbstractCrudTrilhaAuditoriaDao<Empresa, EmpresaSearch, Integer> {
public EmpresaDao() {
super(Empresa.class);
}
}
a classe abstrata AbstractCrudTrilhaAuditoriaDao, esta criando uma linha de log, em outra entidade do sistema,
Mas estou tentando abrir uma transação nesse caso, pois se der o erro na geração da linha de LOG, deve dar rollback em tudo, ja testei varias solucoes que estao na web e nenhuma funcionou, devo ter esquecido algo
public abstract class AbstractCrudTrilhaAuditoriaDao<T extends AbstractEntity, S extends AbstractSearchEntity, ID extends Serializable>
extends GenericDao<T, S, ID> {
public AbstractCrudTrilhaAuditoriaDao(Class<T> clazz) {
super(clazz);
}
@EJB
private TrilhaAuditoriaDao trilhaAuditoriaDao;
private static final long serialVersionUID = 1L;
@Override
public T save(T entity) throws MetaException {
try {
TipoOperacaoEnum tipoOperacaoEnum = TipoOperacaoEnum.INCLUSAO;
if (entity.getId() != null) {
tipoOperacaoEnum = TipoOperacaoEnum.ALTERACAO;
}
T t = super.save(entity);
TrilhaAuditoria trilhaAuditoria = new TrilhaAuditoria();
trilhaAuditoria.setDataHoraOpracao(new Date());
trilhaAuditoria.setNomeTabela(this.getClass().getName());
trilhaAuditoria.setTipoOperacao(tipoOperacaoEnum);
trilhaAuditoria.setUsuario((Usuario) UsuarioSession.getInstance().getUsuarioLogado());
trilhaAuditoria.setNumeroLinhaTabela(t.getId());
trilhaAuditoriaDao.save(trilhaAuditoria);
return t;
} catch (Exception e) {
throw new RuntimeException("erro");
}
}
@Override
public void delete(T t) throws MetaException {
Integer id = t.getId();
super.delete(t);
TrilhaAuditoria trilhaAuditoria = new TrilhaAuditoria();
trilhaAuditoria.setDataHoraOpracao(new Date());
trilhaAuditoria.setNomeTabela(this.getClass().getName());
trilhaAuditoria.setTipoOperacao(TipoOperacaoEnum.EXCLUSAO);
trilhaAuditoria.setUsuario((Usuario) UsuarioSession.getInstance().getUsuarioLogado());
trilhaAuditoria.setNumeroLinhaTabela(id);
trilhaAuditoriaDao.save(trilhaAuditoria);
}
}
Assim, como coloquei, nao possui nenhum dos meus testes, se alguem ajudar, ja utilizei tudo que eh maneira de anotar, como vcs estao utilizando?