@Gabriel_Leoncini92 escreveu:
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)
Mensagens: 7
Participantes: 4