Que a melhor maneira de gerenciar um EntityManager com JSF 2.0?
alanrodrigues
O erro ta claro… em algum momento vc ta fechando o entitymanager…
Em relação ao gerenciamento, sempre usei jpa com spring… na minha opnião a melhor maneira…
Quando eu n usava spring utilizava apenas o hibernate em um dao generico
Edison_Martins
Mas quem gerencia as EntityManager é a JPAFilter, o que ela está fazendo de errado?
alanrodrigues
o EntityManager chega null?
Edison_Martins
Não, ela chega fechada. Estou usando uma @SessionScoped.
Edison_Martins
publicclassUnidadeIESRepository{privateEntityManagermanager;publicUnidadeIESRepository(EntityManagermanager){this.manager=manager;}publicvoidadiciona(UnidadeIESunidade){System.out.println("Persistindo unidadeIES");if(!this.manager.isOpen()){System.out.println("MANAGER ESTÁ FECHADA");}this.manager.persist(unidade);System.out.println("UnidadeIES Persistida");}publicvoidremove(Longid){UnidadeIESunidade=this.procura(id);this.manager.remove(unidade);}publicUnidadeIESatualiza(UnidadeIESunidade){returnthis.manager.merge(unidade);}publicUnidadeIESprocura(Longid){returnthis.manager.find(UnidadeIES.class,id);}@SuppressWarnings("unchecked")publicList<UnidadeIES>getLista(){Queryquery=this.manager.createQuery("select x from UnidadeIES x");returnquery.getResultList();}@SuppressWarnings("unchecked")publicList<UnidadeIES>getListaSimples(){Queryquery=this.manager.createQuery("select new UnidadeIES(x.id, x.nome, x.endereco, x.cep, x.telefone1, x.telefone2, x.email, x.coordenada, x.ies, x.localidade ) from UnidadeIES x");returnquery.getResultList();}@SuppressWarnings("unchecked")publicList<UnidadeIES>getListaParaValidacao(){Queryquery=this.manager.createQuery("select new UnidadeIES(x.id, x.nome, x.endereco, x.ies) from UnidadeIES x");returnquery.getResultList();}}
alanrodrigues
Hm… ta…
Eu acho q voce ta injetando o EntityManager numa Request, e depois tenta recupera-lo no Session…
Essa construcao n funciona…
Só funciona se for outra Request…
Vc ta usando Glassfish?
Edison_Martins
Não, estou usando o TOMCAT 7.0.34
alanrodrigues
Hm…
Tenta utilizar o @PersistenceContext pra injetar o EntityManager
assim: