Dúvida relacionamento com JPA

2 respostas
gribeiro

Fala, galera do GUJ ! :stuck_out_tongue:

Talvez até tenha alguém já postado dúvida similar, mas mesmo com a pesquisa não consegui encontrar uma solução mais “explicativa” por assim dizer.
Seguinte : no projetinho que estou engajado tenho uma entidade funcionário e outra entidade cargo.
Sendo que : 1 funcionário pode ocupar n cargos (pois pode estar exercendo cargos diferentes em projetos diferentes) e 1 mesmo cargo pode ser exercido por n funcionários.
Temos, pelo exposto, um relacionamento que exige uma tabela intermédiária contendo como chaves estrangeiras as chaves primárias das tabelas de funcionário e cargo.
Agora a dúvida cruel: como ficaria o relacionamento acima utilizando annotations com JPA ?
Detalhe : pelo que pude perceber, o funcionário é “quem manda” na relação … ou estou errado ???
Agradeço antecipadamente pela colaboração da tchurma !! :lol:

P.S.: esse projetinho acadêmico está sendo implementado usando JBoss Seam, daí teria problemas com lazy exception ???[i][u] :oops:

2 Respostas

C

Gribeiro,

Deve ser algo assim que vc precisa.

public class Funcionario {

    ...

    @ManyToMany(fetch = FetchType.EAGER, targetEntity = Cargo.class,
               cascade = { CascadeType.REMOVE, CascadeType.MERGE,
               CascadeType.REFRESH })
    @JoinTable(name = "funcionario_cargo",
               joinColumns = { @JoinColumn(name = "id_funcionario") },
               inverseJoinColumns = { @JoinColumn(name = "id_cargo") },
               uniqueConstraints = { @UniqueConstraint(columnNames = { "id_funcionario", "id_cargo" }) })
    private Set<Cargo> cargos;


    ...

}


public class Cargo {

    ....

    @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE },
                mappedBy = "cargos",
                targetEntity = Funcionario.class)
    private Set<Funcionario> funcionarios;

    ....

}

@braços
gribeiro

Opa, ccllss !!!

Valeu mesmo pela “aula” ! Rápida e rasteira !!! :smiley:

Vou tentar amanhã mesmo !

Forte @braço !!!

T+ !!! :stuck_out_tongue:

Criado 21 de abril de 2010
Ultima resposta 21 de abr. de 2010
Respostas 2
Participantes 2