Olá Walter, isso que achei estranho não tem um 'cause by', o que fiz foi o seguinte ... tenho o interface Dao que os metodos lança exceções e DaoImpl implementa a interface e não trata transação nenhuma .. então ele repassa a exceção...
Onde está dando esse erro é uma classe Service onde devo tratar a transação.
Me explica melhor como deveria ser para tirar esse "if(transaction != null && transaction.isActive())"
Resolvi o problema inicializando a transação como propriedade da classe Service, pois dentro do try{} como é recomendado dá o erro que mencionei .. tenho mais de um método que usa transações.
Valeu