[RESOLVIDO]Erro ao gravar na tabela is not a known entity type

Pessoal,

fiz um pequeno exemplo, porem esta dando o seguinte erro :

Exception in thread “main” java.lang.IllegalArgumentException: Object: br.uniplan.servico.planouni.Pai[ id=null ] is not a known entity type.
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4169)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:440)
at br.uniplan.dao.planouni.Teste.blah(Teste.java:37)

*********************************Main
    public void blah() {

        EntityManager em = em();
        em.getTransaction().begin();
/*        Cadguia cadguia = new Cadguia();
        Itensguia itensguia = new Itensguia();
        itensguia.setCadguia(cadguia);
        ItensguiaPK ipk = new ItensguiaPK();
        ipk.setId(1);
        itensguia.setItensguiaPK(ipk);
//        cadguia.setTipoguia("Z");
        em.persist(itensguia);*/
        Pai pai = new Pai();
        //pai.setId(10);
        pai.setNome("fdsafdsafadsf");
        em.persist(pai);
        
        em.getTransaction().commit();
    }
    
    public static void main(String[] args) {
        new Teste().blah();
    }
    
    public static EntityManager em() {
        Object[] objects = new Object[]{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx};
        StringBuilder userdbString = new StringBuilder();
        userdbString.append("jdbc:postgresql://").append((String) objects[2]).append(":").append(String.valueOf(objects[3])).append("/").append((String) objects[4]);
        Map param = new HashMap();
        param.put("javax.persistence.jdbc.url", userdbString.toString());
        param.put("javax.persistence.jdbc.user", (String) objects[5]);
        param.put("javax.persistence.jdbc.password", (String) objects[6]);
        param.put("javax.persistence.jdbc.driver", "org.postgresql.Driver");
        return Persistence.createEntityManagerFactory("xxxxxxxxxxxxxxxxx", param).createEntityManager();
    }



*******************************
@Entity
@Table(name = "pai")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Pai.findAll", query = "SELECT p FROM Pai p"),
    @NamedQuery(name = "Pai.findById", query = "SELECT p FROM Pai p WHERE p.id = :id"),
    @NamedQuery(name = "Pai.findByNome", query = "SELECT p FROM Pai p WHERE p.nome = :nome")})

public class Pai implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Size(max = 50)
    @Column(name = "nome")
    private String nome;
    @OneToMany(mappedBy = "filhoId")
    private Collection<Filho> filhoCollection;

**************************

@Entity
@Table(name = "filho")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Filho.findAll", query = "SELECT f FROM Filho f"),
    @NamedQuery(name = "Filho.findById", query = "SELECT f FROM Filho f WHERE f.id = :id"),
    @NamedQuery(name = "Filho.findByNome", query = "SELECT f FROM Filho f WHERE f.nome = :nome")})
public class Filho implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Size(max = 50)
    @Column(name = "nome")
    private String nome;
    @JoinColumn(name = "filho_id", referencedColumnName = "id")
    @ManyToOne
    private Pai filhoId;


Java SE precisa ter a classe declarada no persistence.xml

Com hibernate ele costuma contornar isso, mas não é obrigatório. Outras implementações não o fazem.

Evandro,

Nas declarações de variáveis da classe Pai tenta alterar o tipo do id…
vc declarou como objeto Integer…mude para int

altere

    private Integer id;  

para

    private int id;  

Abraços

vlw Helbert, add no persistence e deu certo…abc