JPA: EntityManager dando 'java.lang.NullPointerException'

5 respostas
V

Oi pessoal,
criei um projeto simples no Eclipse com o Glassfish (já criei o DataSourcePool no Glassfish)
E configurei da seguinte forma o meu persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="SuaParte"> <jta-data-source>jdbc/SuaParteDS</jta-data-source> <class>com.teste.entity.Area</class> //classes.. <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit> </persistence>

Então criei um DAO que irá utilizar esse EntityManager injetado:

@Stateless @LocalBean public class DAO { @PersistenceContext(unitName = "SuaParte") private EntityManager em; public void persist(Area transientInstance) { try { em.persist(transientInstance); } catch (RuntimeException re) { throw re; } } }

Mas toda vez que tenho chamar dao.persist() ele lança uma exceção:

Exception in thread "main" java.lang.NullPointerException at com.test.tester.DAO.persist(DAO.java:21) at com.test.tester.Main.main(Main.java:17)

Pior que eu nem sei porque essa exceção esta sendo lançada…
Alguém poderia me ajudar por favor ?
Obrigado pela ajuda.

5 Respostas

R

Precisa mesmo de EJB?

V

Eu consegui rodar com o Hibernate (sem o injection no EntityManager) meu velho, mas não somente com o JPA.
Eu queria poder usar o EntityManager injetado, não ter que ficar me preocupando com a gerência das sessões.

R

Eu consegui rodar com o Hibernate (sem o injection no EntityManager) meu velho, mas não somente com o JPA.
Eu queria poder usar o EntityManager injetado, não ter que ficar me preocupando com a gerência das sessões.

É exatamente essa a minha pergunta.

Pq nao usa Spring?

M

Valter Henrique:
Oi pessoal,
criei um projeto simples no Eclipse com o Glassfish (já criei o DataSourcePool no Glassfish)
E configurei da seguinte forma o meu persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="SuaParte"> <jta-data-source>jdbc/SuaParteDS</jta-data-source> <class>com.teste.entity.Area</class> //classes.. <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit> </persistence>

Então criei um DAO que irá utilizar esse EntityManager injetado:

@Stateless @LocalBean public class DAO { @PersistenceContext(unitName = "SuaParte") private EntityManager em; public void persist(Area transientInstance) { try { em.persist(transientInstance); } catch (RuntimeException re) { throw re; } } }

Mas toda vez que tenho chamar dao.persist() ele lança uma exceção:

Exception in thread "main" java.lang.NullPointerException at com.test.tester.DAO.persist(DAO.java:21) at com.test.tester.Main.main(Main.java:17)

Pior que eu nem sei porque essa exceção esta sendo lançada…
Alguém poderia me ajudar por favor ?
Obrigado pela ajuda.

faz muito tempo que eu não mecho com ejb mas… sua tag persistence unit se não me engano precisa de um atributo chamado transaction-type, que deve conter o valor JTA ou RESOURCE_LOCAL caso você queira usar dentro dele um non-jta-data-source e injetar o EntityManagerFactory no lugar do EntityManager.

B

Acho que pode te ajudar http://code.google.com/p/jpa-component/wiki/Doc_PT_Br

Criado 19 de setembro de 2011
Ultima resposta 8 de out. de 2011
Respostas 5
Participantes 4