Duvida JPA , consulta no banco de dados!

Bom dia,
Estou estudando JPA e estou com um problema que ainda nao consegui solucionar…

Eu já consigo inserir , deletar mas nao consigo consultar.
Eu tenho na minha tabela de Usuario os campos :

Integer id,
String nome.

Estou fazendo assim:

        javax.persistence.EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("CRUD_JPAPU");
        javax.persistence.EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();

        List listIds;
        ArrayList<Usuario> retorno = new ArrayList();
        listIds = em.createQuery("SELECT t.id from Usuario t").getResultList();

            for (Iterator<String> it = listIds.iterator(); it.hasNext();) {
            String elem = String.valueOf(it.next());
            retorno.add((Usuario) em.createNamedQuery("Usuario.findById").setParameter("id", elem).getSingleResult());
            
        }

Não sei se esta correto, mas preciso inserir o retorno em um objeto do tipo Usuario para poder recuperar e listar…
Como eu faria isso???

Olá,

Se vc quiser buscar um usuário pelo id basta:

em.find(Usuario.class, id);

Para listar todos os usuários basta:

List<Usuario> listaUsuarios = em.createQuery("from Usuario u").getResultList();   
  1. Não é necessário o beginTransaction(), pois você não está fazendo nenhuma operação que requer iniciar uma transação, e ainda por cima você não está finalizando.
  2. Substitua o código feito por:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("CRUD_JPAPU"); EntityManager em = emf.createEntityManager(); /* retorna os usuários que estão persistidos no banco de dados já na lista */ List<Usuario> usuarios = em.createQuery("select u from Usuario u").getResultList(); em.close(); emf.close();

realize os imports necessários e compile.

opzzz! o amigo ai já tinha respondido!

Obrigado, era isso mesmo…