Hibernate: mapeamento de fk

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é?

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&lt;CursoLog&gt; 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…