Erro com relacionamento de tabelas no hibernate

4 respostas
M

Pessoal, tenho a Tabela USUARIO que tem o ID_ENTIDADE como chsve estrangeira. Para isso usei o relacionamento na classe Usuário:

@OneToOne
private Entidade entidade;

Mas está dando o seguinte erro:

12:23:01,018 DEBUG JDBCExceptionReporter:63 - could not execute query 

[select this_.id_usuario as id1_0_1_, this_.nome as nome0_1_, this_.username as username0_1_, this_.senha as senha0_1_, this_.email as email0_1_, this_.entidade_id_entidade as entidade6_0_1_, entidade2_.id_entidade as id1_1_0_, entidade2_.nome as nome1_0_, entidade2_.fantasia as fantasia1_0_ from ps_usuario this_, ps_entidade entidade2_ where this_.entidade_id_entidade=entidade2_.id_entidade(+)]

java.sql.SQLException: ORA-00904: "THIS_"."ENTIDADE_ID_ENTIDADE": invalid identifier

O que estou fazendo de errado :

4 Respostas

fabiojwalter

Bicho de uma olhada neste exemplo que tenho neles estão mapeados os relacionamentos de Curso (1) com (N) Disciplinas. Existe tambem um mapeamento de uma classe herdada. Ainda não esta pronto mas o que tem ja esta funcionando qualquer coisa poste novamente ai !!!

Existe ai no meio uma lista de Turmas mas esqueça pois é uma parte do prograna que ainda não terminei.

package beans;

import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.Table;


@Entity
@Table(name="disciplinas")
public class Disciplina {
    private Integer id;
    private String nome;
    private String ementa;
    private Curso curso;
//    private List<Turma> turmas;
    
    /** Creates a new instance of Disciplina */
    public Disciplina() {
    }
    
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public Integer getId() {
        return id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    
    public String getNome() {
        return nome;
    }
    
    public void setNome(String nome) {
        this.nome = nome;
    }
    
    public String getEmenta() {
        return ementa;
    }
    
    public void setEmenta(String ementa) {
        this.ementa = ementa;
    }
    
    @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
    @JoinColumn(name="Curso_id")
    public Curso getCurso() {
        return curso;
    }
    
    public void setCurso(Curso curso) {
        this.curso = curso;
    }
    
  /*  public List<Turma> getTurmas() {
        return turmas;
    }
   
    public void setTurmas(List<Turma> turmas) {
        this.turmas = turmas;
    }*/
    
}
/*
 * Curso.java
 *
 * Created on May 16, 2007, 11:20 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package beans;

import java.util.List;
import javax.persistence.*;


@Entity
@Table(name="cursos")
public class Curso {
    private Integer id;
    private String nome;
    private String descricao;
    private List<Disciplina> disciplinas;
    
    /** Creates a new instance of Curso */
    public Curso() {
    }
    
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public Integer getId() {
        return id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    
    public String getNome() {
        return nome;
    }
    
    public void setNome(String nome) {
        this.nome = nome;
    }
    
    public String getDescricao() {
        return descricao;
    }
    
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    
    @OneToMany(mappedBy="curso", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
   @OrderBy("nome")
    public List<Disciplina> getDisciplinas() {
        disciplinas = null;
        return disciplinas;
    }
    
    public void setDisciplinas(List<Disciplina> disciplinas) {
        this.disciplinas = disciplinas;
    }
    
}
fabiojwalter

Documentação do projeto!!

http://www.guj.com.br/content/articles/hibernate/intruducao_hibernate3_guj.pdf

M

Funcionou da seguinte forma:

@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private Entidade entidade;

Valew Galera!!!

M

Feito o relacionamento, pra pegar o nome da entidade e mostar no formulário, usando o VRaptor não seria fazer apenas :

<input type="text" name="usuario.entidade.nome"	 	value="${usuario.entidade.nome }"	size="37" readonly="readonly"/>

Ou, teria que fazer algum método buscando esta entidade ?? se for, como seria este método ?

Valew.

Criado 17 de maio de 2007
Ultima resposta 17 de mai. de 2007
Respostas 4
Participantes 2