Posta o código do DAO, ficará mais fácil de ajudar.
andersonrc
taí o DAORepresentante
publicclassDAORepresentanteextendsDAOJPA<Representante>{publicDAORepresentante(){super();}publicintremoveByNome(Stringnome){Queryquery=super.getManager().createQuery("DELETE FROM Representante r WHERE r.nome LIKE '"+nome+"'");returnquery.executeUpdate();}}
e o DAOJPA
publicclassDAOJPA<T>implementsDAOInterface<T>{protectedstaticEntityManagermanager;protectedDAOJPA(){manager=getManager();}protectedstaticEntityManagergetManager(){if(manager==null){EntityManagerFactoryfactory=Persistence.createEntityManagerFactory("cartorio");manager=factory.createEntityManager();}returnmanager;}publicvoidpersist(Tobj){getManager().persist(obj);}publicvoidremove(Tobj){getManager().remove(obj);}publicTmerge(Tobj){returngetManager().merge(obj);}publicvoidrefresh(Tobj){getManager().refresh(obj);}publicvoidflush(){getManager().flush();}@SuppressWarnings("unchecked")publicTfind(Objectchave){Class<T>type=(Class<T>)((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];returngetManager().find(type,chave);}@SuppressWarnings("unchecked")publicList<T>findAll(){Class<T>type=(Class<T>)((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];Queryquery=getManager().createQuery("select x from "+type.getSimpleName()+" x");return(List<T>)query.getResultList();}@SuppressWarnings("unchecked")publicsynchronizedList<T>findByField(Stringcampo,Stringvalor){Class<T>type=(Class<T>)((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];Queryquery=getManager().createQuery("select x from "+type.getSimpleName()+" x "+"where x."+campo+" = \""+valor+"\"");return(List<T>)query.getResultList();}publicvoidclose(){if(getManager().isOpen()){manager=null;}}publicvoidbegin(){if(!getManager().getTransaction().isActive()){getManager().getTransaction().begin();}}publicvoidcommit(){if(getManager().getTransaction().isActive()){getManager().getTransaction().commit();}}publicvoidrollback(){if(getManager().getTransaction().isActive()){getManager().getTransaction().rollback();}}//----------------------------------------------------------//----------------------- USO DE JPQL ----------------------//----------------------------------------------------------publicObjectfindByQuery(StringconsultaJPQL){try{Queryq=getManager().createQuery(consultaJPQL);return(Object)q.getSingleResult();}catch(NoResultExceptione){returnnull;}catch(NonUniqueResultExceptione){returnnull;}}publicListfindAllByQuery(Stringconsulta){try{Queryq=getManager().createQuery(consulta);returnq.getResultList();}catch(NoResultExceptione){returnnull;}catch(NonUniqueResultExceptione){returnnull;}}publicListfindAgregateByQuery(Stringconsulta){Queryq=getManager().createQuery(consulta);returnq.getResultList();}@SuppressWarnings("unchecked")publicintupdadeAll(Stringconsulta){getManager().getTransaction().begin();Queryq=getManager().createQuery(consulta);intlinhas=q.executeUpdate();getManager().getTransaction().commit();returnlinhas;}}
O problema agora é outro: supomos que eu cadastre os representantes A, B e C. Caso eu tente excluir o B ou C, acaba sendo excluído o A. Então o que ocorre é que sempre acaba excluindo o 1º registro do List.
A variável representantes é uma lista? Se sim, como você a preenche??
andersonrc
sim Daniel, é uma lista List<Representante> representantes = daoRepresentante.findByField(“nome”, nome);
No DAOJPA essa lista é preenchida e retornada por esse método
@SuppressWarnings("unchecked")publicsynchronizedList<T>findByField(Stringcampo,Stringvalor){Class<T>type=(Class<T>)((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];Queryquery=getManager().createQuery("select x from "+type.getSimpleName()+" x "+"where x."+campo+" = \""+valor+"\"");return(List<T>)query.getResultList();}
andersonrc
quanto ao preenchimento vc se refere, a como esses dados são cadastrados?