Estou usando um session ejb(facade) para regras e outro session para dao/eao para fazer questoes de acesso a banco.
Quando nao existe um registro no banco esta chegando no session facade um EJBException e nao um noresultexception. Dentro do EAO é gerada
uma noresultexception corretamente, mas qdo lança para capturar no session vem como EJBException.
É correto esse comportamento ?
[code]
@stateless
class ClasseEAO {
@persistecontext
EntityManager entitymanager;
//primeira tentativa
public Cobranca findCobrancaByNossoNumero(String nossoNumero) {
return (Cobranca) entityManager.createNamedQuery(Cobranca.COBRANCA_BY_NOSSONUMERO).setParameter(“nossonumero”, nossoNumero)
.getSingleResult();
}
//segunda tentativa
public Cobranca findCobrancaByNossoNumero(String nossoNumero) {
try {
return (Cobranca) entityManager.createNamedQuery(Cobranca.COBRANCA_BY_NOSSONUMERO).setParameter(“nossonumero”, nossoNumero)
.getSingleResult();
} catch (NoResultException e) {
throw e;
}
}
}
@stateless
class ClasseFacade{
@EJB
ClasseEAO cobrancaEAO;
void metodo(){
try {
Cobranca cobranca = cobrancaEAO.findCobrancaByNossoNumero(nossoNumero);
//…
} catch (NoResultException e) { //a excecao deveria cair aqui
return false;
} catch (Exception e) { //a excecao EJBException cai aqui.
//o que chega: javax.ejb.EJBException: javax.persistence.NoResultException: No entity found for query
return false;
}}[/code]