plentz
Agosto 17, 2006, 10:55am
#1
Buenas, xô explicar resumidamente. Tenho uma classe Curso e uma classe CursoLog.
Curso possu relacionamento OneToMany pra CursoLog. Mas o relacionamento se dá a partir da coluna cd_curso, porém,
a pk (Ou ID, como preferirem) de CursoLog é cd_curso MAIS dt_cancelamento.
Se eu tento fazer o mapeamento só pelo cd_curso, o hibernate me apita com o seguinte erro:
A Foreign key refering xxx.Curso has the wrong number of column. should be 2
E ai José?
plentz
Agosto 17, 2006, 10:13pm
#2
Buenas, problema resolvido…
Foi só inverter o lado mapeado…
Na curso, ficou
[code]
private Set<CursoLog> cursoLog;
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY,
mappedBy = “Curso”)
public Set<CursoLog> getCursoLog() {
return this.cursoLog;
}
public void setcursoLog(Set<CursoLog> cursoLog) {
this.cursoLog = cursoLog;
}[/code]
CursoLog
[code] @ManyToOne (cascade = {}, fetch = FetchType.LAZY)
@JoinColumns ( {
@JoinColumn (name = “cd_escola”, unique = false, nullable = false,
insertable = false, updatable = false),
@JoinColumn (name = “cd_curso”, unique = false, nullable = false,
insertable = false, updatable = false) })
public Curso getCurso() {
return Curso;
}
public void setCurso(Curso Curso) {
this.Curso = Curso;
}[/code]
Olá amigo!
Eu to começando com hibernate e estou com esse erro igualzinho que vc estava. MAs parece que esta tudo correto, mas ele dá o erro:
eu quero aprender a configurar isso de uma vez por todas, mas tah dificil…rs
olha o código:
Andar.class
@IdClass(Andar.class)
@Entity
public class Andar implements Serializable{
@Id
@ManyToOne
@JoinColumn(name="codbloco")
private Bloco bloco;
@Id
@ManyToOne
@JoinColumn(name="codpavimento")
private Pavimento pavimento;
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY,
mappedBy = "andar")
private List<Sala> salas;
@Column(name="banheiro")
private int banheiro;
@Column(name="bebedouro")
private int bebedouro;
public int getBanheiro() {
return banheiro;
}
public void setBanheiro(int banheiro) {
this.banheiro = banheiro;
}
public int getBebedouro() {
return bebedouro;
}
public void setBebedouro(int bebedouro) {
this.bebedouro = bebedouro;
}
public Bloco getBloco() {
return bloco;
}
public void setBloco(Bloco bloco) {
this.bloco = bloco;
}
public Pavimento getPavimento() {
return pavimento;
}
public void setPavimento(Pavimento pavimento) {
this.pavimento = pavimento;
}
public List<Sala> getSalas() {
return salas;
}
public void setSalas(List<Sala> salas) {
this.salas = salas;
}
}
@Entity
@IdClass(TipoSala.class)
public class TipoSala {
@Id
@Column(name="codtiposala")
private int codTipoSala;
@Column(name="dsctiposala")
private String dscTipoSala;
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY,
mappedBy = "tiposala")
private List<Sala> salas;
public int getCodTipoSala() {
return codTipoSala;
}
public void setCodTipoSala(int codTipoSala) {
this.codTipoSala = codTipoSala;
}
public String getDscTipoSala() {
return dscTipoSala;
}
public void setDscTipoSala(String dscTipoSala) {
this.dscTipoSala = dscTipoSala;
}
public List<Sala> getSalas() {
return salas;
}
public void setSalas(List<Sala> salas) {
this.salas = salas;
}
}
sala.class
@IdClass(Sala.class)
@Entity
public class Sala implements Serializable{
@Id
@Column(name="codsala")
private String codSala;
@Column(name="capacidade")
private int capacidade;
@Column(name="arcondicionado")
private int arCondicionado;
@Column(name="ventilador")
private int ventilador;
@Column(name="ativo")
private String ativo;
@Column(name="dscsala")
private String dscSala;
@Column(name="tipoquadro")
private String tipoQuadro;
@Column(name="datashow")
private String dataShow;
@ManyToOne
@JoinColumn(name="codtiposala")
private TipoSala tipoSala;
@Id
@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
@JoinColumns( {
@JoinColumn(name = "codbloco"),
@JoinColumn(name = "codpavimento")})
private Andar andar;
public Andar getAndar() {
return andar;
}
public void setAndar(Andar andar) {
this.andar = andar;
}
public String getCodSala() {
return codSala;
}
public void setCodSala(String codSala) {
this.codSala = codSala;
}
public int getCapacidade() {
return capacidade;
}
public void setCapacidade(int capacidade) {
this.capacidade = capacidade;
}
public int getArCondicionado() {
return arCondicionado;
}
public void setArCondicionado(int arCondicionado) {
this.arCondicionado = arCondicionado;
}
public int getVentilador() {
return ventilador;
}
public void setVentilador(int ventilador) {
this.ventilador = ventilador;
}
public String getAtivo() {
return ativo;
}
public void setAtivo(String ativo) {
this.ativo = ativo;
}
public String getDscSala() {
return dscSala;
}
public void setDscSala(String dscSala) {
this.dscSala = dscSala;
}
public String getTipoQuadro() {
return tipoQuadro;
}
public void setTipoQuadro(String tipoQuadro) {
this.tipoQuadro = tipoQuadro;
}
public String getDataShow() {
return dataShow;
}
public void setDataShow(String dataShow) {
this.dataShow = dataShow;
}
public TipoSala getTipoSala() {
return tipoSala;
}
public void setTipoSala(TipoSala tipoSala) {
this.tipoSala = tipoSala;
}
}
Se vocÊ puder me ajudar…qdo tiver um tempinho…agradeço!
Já to ficando doidão com essas configurações do hibernate…