Erro ao Persisitir Objetos

6 respostas
farzac

Ola galera

Estou pela primeira vez conseguindo persistir objetos, mas esta dando um erro, sera que alguem pode me ajudar.
O erro que da é:

init:

deps-jar:

compile:

run:

[TopLink Info]: 2008.05.24 06:01:04.078ServerSession(16602326)TopLink, version: Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))

[TopLink Info]: 2008.05.24 06:01:05.453ServerSession(16602326)file:/D:/Meus%20Documentos/Projetos/PROJETO_PERSISTENCIA/JavaPersistencia/build/classes/-TesteJPAPU login successful

Exception in thread main java.lang.IllegalArgumentException: Object: br.com.farzacsystem.Usuario@13d28e3 is not a known entity type.

at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:3198)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist(EntityManagerImpl.java:190)

at br.com.farzacsystem.TestePersistencia.main(TestePersistencia.java:31)

Java Result: 1

CONSTRUÍDO COM SUCESSO (tempo total: 17 segundos)

Espero que alguem possa me ajudar.

Desde ja, muito obrigado…

6 Respostas

farzac

Ola galera

Apos analisar, constatei que o erro se trata da linha 26

Veja o codigo e linha onde o erro é disparado.

1  - package br.com.farzacsystem;

2  -

3  - import javax.swing.JOptionPane;

4  - import javax.persistence.*;

5  -

6  - public class TestePersistencia

7  - {

8  -     public static void main(String[] args)

9  -     {

10-         String nome;

11-         String sobrenome;

12-         int idade;

13-	

14-         EntityManagerFactory emf = Persistence.createEntityManagerFactory(TesteJPAPU);

15-         EntityManager em = emf.createEntityManager();

16-         em.getTransaction().begin();

17-	

18-         Usuario usr = new Usuario();

19-         nome = JOptionPane.showInputDialog(Insira o Nome do Usuário:);

20-         usr.setNome(nome);

21-         sobrenome = JOptionPane.showInputDialog(Insira o Sobrenome do Usuário:);

22-         usr.setSobrenome(sobrenome);

23-         idade = Integer.parseInt(JOptionPane.showInputDialog(Insira sua idade:));

24-         usr.setIdade(idade);

25-	

26-         em.persist(usr);

27-         em.getTransaction().commit();

28-         em.close();

29-         emf.close();

30-         JOptionPane.showMessageDialog(null,"ID: “+usr.getId()+”\nNome: "+usr.getNome()+

31-         "\nSobrenome: “+usr.getSobrenome()+”\nIdade: "+usr.getIdade(),

32-         Usuário Persistido,JOptionPane.INFORMATION_MESSAGE);

33-     }

34-}

A mensagem de erro:

Exception in thread main java.lang.IllegalArgumentException: Object: br.com.farzacsystem.Usuario@210b5b is not a known entity type.

at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:3198)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist(EntityManagerImpl.java:190)

at br.com.farzacsystem.TestePersistencia.main(TestePersistencia.java:26)

Java Result: 1

Espero que alguem possa me ajudar com relação ao erro .

Desde ja, muito obrigado.

lucasap2005
Object: br.com.farzacsystem.Usuario@210b5b is not a known entity type

Aqui fala que o objeto que você está tentando persistir não é um tipo de entidade conhecida.
Vc declarou seu objeto Usuario como uma entidade?

farzac

Ola Lucas

Minha classe Usuario esta :

package br.com.farzacsystem;

/**
*

  • @author zaccantte
    */
    import java.io.Serializable;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.Table;
@Entity

@Table(name = Usuario)

@NamedQueries

(

{

@NamedQuery(name = Usuario.findById, query = SELECT u FROM Usuario u WHERE u.id = :id),

@NamedQuery(name = Usuario.findByNome, query = SELECT u FROM Usuario u WHERE u.nome = :nome),

@NamedQuery(name = Usuario.findBySobrenome, query = SELECT u FROM Usuario u WHERE u.sobrenome = :sobrenome),

@NamedQuery(name = Usuario.findByIdade, query = SELECT u FROM Usuario u WHERE u.idade = :idade)

}

)
public class Usuario implements Serializable

{

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)

@Column(name = id, nullable = false)

private int id;
@Column(name = "nome", nullable = false)   
private String nome;   

@Column(name = "sobrenome", nullable = false)   
private String sobrenome;   

@Column(name = "idade", nullable = false)   
private int idade;   

public void setId(int id)
{
    this.id = id;
}
public int getId() 
{
    return this.id;   
}   

public void setNome(String nome) 
{
    this.nome = nome;   
}   

public String getNome() 
{
    return this.nome;   
}   

public void setIdade(int idade) 
{
    this.idade = idade;   
}   

public int getIdade() 
{
    return this.idade;   
}

public String getSobrenome() 
{
    return sobrenome;
}

public void setSobrenome(String sobrenome) {
    this.sobrenome = sobrenome;
}

}

nellson.maia

Alguem conseguiu resolver?

Estou com o mesmo problema…

Andre_Brito

Algumas vezes precisa colocar ela dentro do persistence.xml. Eu digo algumas vezes porque quando fiz uma aplicação web pequena eu não precisei (estava usando o Hibernate), mas usando o OpenJPA eu tive que colocar.

Ela eu quis dizer a entidade, com o pacote.

G

Acho que minha resposta vem um pouco tarde. De qualquer forma, se você roda o Toplink em ambiente não gerenciado é necessário adicionar essa propriedade no seu persistence.xml.

<exclude-unlisted-classes>false</exclude-unlisted-classes>
Criado 24 de maio de 2008
Ultima resposta 18 de jul. de 2010
Respostas 6
Participantes 5