Ajuda com Hibernate

3 respostas
diogoprosoft

Galera vou explicar minha situação

Estou aprendendo hibernate, e estou fazendo um relacionamento entre a classe Pessoa e Endereco, até ai blz

Tenho uma outra classe chamada GerarTabelas, que cria minha tabela no banco postgresql

Então peguei a classe GerarTabela e mandei criar a tabela Endereco funcionou blz, mais quando mandei criar a Pessoa deu esse erro

Exception in thread "main" org.hibernate.AnnotationException: @OneToOne or @ManyToOne on relacionamento.Pessoa.endereco references an unknown entity: relacionamento.Endereco
        at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81)
        at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:499)
        at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:304)
        at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:762)
        at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:93)
        at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:61)
        at relacionamento.GeraTabelas.main(GeraTabelas.java:14)
Java Result: 1

Essa é minha classe Endereco

@Entity
@Table(name="endereco")
public class Endereco {

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="endereco_sequence_generator")
    @SequenceGenerator(name="endereco_sequence_generator", sequenceName="seq_endereco",allocationSize= 1)
    @Column(name="id", nullable= false)
    private Long id;
    
    private String logradouro;
    
    private String numero;
    
    private String complemento;
    
    public Endereco(){
        
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getLogradouro() {
        return logradouro;
    }

    public void setLogradouro(String logradouro) {
        this.logradouro = logradouro;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }
            
}

Essa é minha classe Pessoa

@Entity
@Table(name="pessoa")
public class Pessoa {

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pessoa_sequence_generator")
    @SequenceGenerator(name="pessoa_sequence_generator", sequenceName="seq_pessoa",allocationSize= 1)
    @Column(name="id", nullable= false)
    private Long id;
    
    @Column(name="nome", nullable= false)
    private String nome;
    
    @ManyToOne
    @JoinColumn(name = "endereco_id", referencedColumnName="id")
    private Endereco endereco;
    
    public Pessoa(){
        
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }


    public String getNome() {
        return nome;
    }

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


    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

E essa é minha classe GerarTabelas

public class GeraTabelas {

    public static void main(String[] args) {
        // Cria uma configuração para a classe Produto
        AnnotationConfiguration cfg = new AnnotationConfiguration();
        cfg.addAnnotatedClass(Pessoa.class);
        
        new SchemaExport(cfg).create(true, true);
    }
    
}

O estou fazendo de errado?

3 Respostas

CintiaDR

Não sei, mas não tá faltando adicionar endereço?

public class GeraTabelas {  
   
     public static void main(String[] args) {  
        // Cria uma configuração para a classe Produto  
         AnnotationConfiguration cfg = new AnnotationConfiguration();  
         cfg.addAnnotatedClass(Pessoa.class);  
         cfg.addAnnotatedClass(Endereco.class); 
         

         new SchemaExport(cfg).create(true, true);  
    }  
       
 }
diogoprosoft

Não, Não O endereço eu já adicionei antes tipo eu fiz a primeira vez com o endereço e agora estou tentando com a pessoa, entendeu.

diogoprosoft

Consegui você tinha razão Cintia eu excluí a tabela no banco e coloquei os dois para criar juntos na classe GerarTabela e funcionou, obrigado
:smiley:

Criado 29 de maio de 2008
Ultima resposta 29 de mai. de 2008
Respostas 3
Participantes 2