Olá Pessoal tudo bem? Bom estou com um problema com o meu JPA aparentemente qualquer tentativa de salvar um objeto ele não funciona basicamente java.lang.NullPointerException
MEU DAO GENERICO:
public class GenericoDAO<T extends Entidade> {
@PersistenceUnit(unitName="MeusistemaPU")
EntityManagerFactory factory;
public EntityManager getEM() throws InstantiationException, IllegalAccessException{
return factory.createEntityManager();
}
public T salvar (T t) throws Exception{
EntityManager em = getEM();
try{
em.getTransaction().begin();
if(t.getId() == null){
em.persist(t);
}else{
if(!em.contains(t)){
if(em.find(t.getClass(),t.getId()) == null){
throw new Exception("Erro ao atualizar");
}
}
t = em.merge(t);
}
em.getTransaction().commit();
}finally{
em.close();
}
return t;
}
}
Minha Interface Entidade:
public interface Entidade {
public Integer getId();
}
Minha Classe de Teste
public class AnimalTeste {
public static void main(String[] args) throws Exception {
Animal gato = new Animal();
GenericoDAO gn = new GenericoDAO();
gato.setDataNascimento("12-02-2013");
gato.setNomeAnimal("Felix");
gato.setPelagem("Preta");
gato.setPeso(4.35);
System.out.println(gato.toString());
//Neste momento no gn.salvar ele nem entra e já lança a Exception
gn.salvar(gato);
}
}
Meu Persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="MeusistemaPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.entidade.Animal</class>
<properties>
<property name="eclipselink.jdbc.batch-writing" value="JDBC" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/animais" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="1234" />
<property name="eclipselink.target-database" value="MySQL"/>
</properties>
</persistence-unit>
</persistence>
Aqui o Erro que da
Exception in thread "main" java.lang.NullPointerException
at com.DAO.GenericoDAO.getEM(GenericoDAO.java:16)
at com.DAO.GenericoDAO.salvar(GenericoDAO.java:20)
at com.teste.AnimalTeste.main(AnimalTeste.java:28)