Utilizando a mesma coluna para diferentes chaves extrangeiras

boa tarde pessoal,

Por favor, meus relacionamentos:

@ManyToOne
@JoinColumns({ @JoinColumn(name = "ano", referencedColumnName="ano"),
               @JoinColumn(name = "idEscolaridade", referencedColumnName="idEscolaridade"),
               @JoinColumn(name = "turma", referencedColumnName="turma"),
               @JoinColumn(name = "idProfessor", referencedColumnName="idProfessor"),
               @JoinColumn(name = "idDisciplina", referencedColumnName="idDisciplina") }
)
private Composicao composicao;

@ManyToOne
@JoinColumns({
               @JoinColumn(name = "anoMatricula", referencedColumnName="ano" ),     // AQUI QUERIA UTILIZAR A MESMA COLUNA DO RELACIONAMENTO ACIMA, OU SEJA "ano"
               @JoinColumn(name = "idEscolaridadeMatricula", referencedColumnName="idEscolaridade" ),   //AQUI TAMBÉM A COLUNA "idEscolaridade"
               @JoinColumn(name = "turmaMatricula", referencedColumnName="turma" ),
               @JoinColumn(name = "idAluno", referencedColumnName="idAluno" ) }
)
private Matricula matricula;

Podem me ajudar ??

Obrigado

cara vc nao fez nehuma pergunta… é erro que ta dando. explique melhor. eu uso e a mesma chave e da certo porem vc tem que mapear com insertabel false e updatable false os campos e criar um de persistenci a pra gravar. só que eu estou passando por um problema que em uma chave composta nao funciona continua pedindo para colocar inset false e update false veja http://www.guj.com.br/posts/list/133839.java

outra coisa coloque codigos entre [code
[/code

Obrigado pela resposta amigo, vc entendeu exatamente o que eu queria, eu ja coloquei esse insertable false, porem ai eu nao consigo inserir ou alterar o registro, voce me falou de uma persistencia para alterar ?? como é isso ??

as chaves:

Este quero referenciar para a COMPOSICAO e MATRICULA, usando as mesmas colunas,

package br.com.nansoft.NaNEducacional;

import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;

@Embeddable
public class FichaPK implements java.io.Serializable {

    @ManyToOne
    @JoinColumns({ @JoinColumn(name = "ano", referencedColumnName="ano"),
                   @JoinColumn(name = "idEscolaridade", referencedColumnName="idEscolaridade"),
                   @JoinColumn(name = "turma", referencedColumnName="turma"),
                   @JoinColumn(name = "idProfessor", referencedColumnName="idProfessor"),
                   @JoinColumn(name = "idDisciplina", referencedColumnName="idDisciplina") }
    )
    private Composicao composicao;

    @ManyToOne
    @JoinColumns({
                   @JoinColumn(name = "anoMatricula", referencedColumnName="ano" ),                                 // Utilizar a mesma coluna referenciada acima
                   @JoinColumn(name = "idEscolaridadeMatricula", referencedColumnName="idEscolaridade" ),   // Utilizar a mesma coluna referenciada acima
                   @JoinColumn(name = "turmaMatricula", referencedColumnName="turma" ),                           // Utilizar a mesma coluna referenciada acima
                   @JoinColumn(name = "idAluno", referencedColumnName="idAluno" ) }
    )
    private Matricula matricula;

//    @ManyToOne
//    @JoinColumn(name="idAluno")
//    private Aluno aluno;

    private Long bimestre;

    public FichaPK() {
    }

    public Long getBimestre() {
        return bimestre;
    }

    public void setBimestre(Long bimestre) {
        this.bimestre = bimestre;
    }

    public Composicao getComposicao() {
        return composicao;
    }

    public void setComposicao(Composicao composicao) {
        this.composicao = composicao;
    }

    public Matricula getMatricula() {
        return matricula;
    }

    public void setMatricula(Matricula matricula) {
        this.matricula = matricula;
    }



}
package br.com.nansoft.NaNEducacional;

import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;

/**
 *
 * @author Allan
 */
@Embeddable
public class ComposicaoPK implements java.io.Serializable {

    @ManyToOne
    @JoinColumns({ @JoinColumn(name = "ano", referencedColumnName="ano"),
                   @JoinColumn(name = "idProfessor", referencedColumnName="idProfessor"),
                   @JoinColumn(name = "idDisciplina", referencedColumnName="idDisciplina") }
    )
//    @ManyToOne
//    @JoinColumns({ @JoinColumn(name = "ano"),
//                   @JoinColumn(name = "idProfessor"),
//                   @JoinColumn(name = "idDisciplina") }
//    )
    private Professor professor;

    @ManyToOne
    @JoinColumn(name="idEscolaridade")
    private Escolaridade escolaridade;

    private String turma;

    public ComposicaoPK() {
    }

    public Escolaridade getEscolaridade() {
        return escolaridade;
    }

    public void setEscolaridade(Escolaridade escolaridade) {
        this.escolaridade = escolaridade;
    }

    public Professor getProfessor() {
        return professor;
    }

    public void setProfessor(Professor professor) {
        this.professor = professor;
    }

    public String getTurma() {
        return turma;
    }

    public void setTurma(String turma) {
        this.turma = turma;
    }
    
}

[code]package br.com.nansoft.NaNEducacional;

import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Embeddable
public class MatriculaPK implements java.io.Serializable {

private Long ano;

@ManyToOne
@JoinColumn(name="idEscolaridade")
private Escolaridade escolaridade;

private String turma;

@ManyToOne
@JoinColumn(name="idAluno")
private Aluno aluno;


public MatriculaPK() {
}

public Aluno getAluno() {
    return aluno;
}

public void setAluno(Aluno aluno) {
    this.aluno = aluno;
}

public Long getAno() {
    return ano;
}

public void setAno(Long ano) {
    this.ano = ano;
}

public Escolaridade getEscolaridade() {
    return escolaridade;
}

public void setEscolaridade(Escolaridade escolaridade) {
    this.escolaridade = escolaridade;
}

public String getTurma() {
    return turma;
}

public void setTurma(String turma) {
    this.turma = turma;
}

}
[/code]

Se puder me dar uma luz, obrigado.