Utilizando a mesma coluna para diferentes chaves extrangeiras

2 respostas
N

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

2 Respostas

arthurminarini

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

N

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;
    }
    
}
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;
    }
    
}

Se puder me dar uma luz,, obrigado.

Criado 30 de julho de 2009
Ultima resposta 3 de ago. de 2009
Respostas 2
Participantes 2