TDSI – Mapeamento objeto relacional (MOR) com JPA – ManyToMany

ManyToMany (muitos para muitos) sem atributos.

Agora vamos supor que um funcionário trabalhar mais de um departamento (Depto)  e um departamento trabalham muitos funcionários (Funcionario). Neste caso temos que escolher o lado dominante, no caso a classe Funcionario.java .

Na classe Funcionario.java vamos nos ater no seguinte trecho de código.

@ManyToMany
 @JoinTable(name = "depto_funcionario", joinColumns = {@JoinColumn(name = "id_funcionario")},
inverseJoinColumns ={@JoinColumn(name = "id_depto")})

private List<Depto> deptos;

    public List<Depto> getDepto() {
        return deptos;
    }

    public void setDepto(List<Depto> depto) {
        this.deptos = depto;
    }

O link com o código completo da classe Funcionario.java.

A anotação @ManyToMany indica o relacionamento muitos para muitos e JoinTable indica como é feita junção entre Funcionario e Depto.

A classe Depto.java , vamos no ater neste trecho de código.

    @ManyToMany(mappedBy = "deptos")
    
    private List<Funcionario> funcionarios;

    public List<Funcionario> getFuncionarios() {
        return funcionarios;
    }

O link com o código completo da classe Depto.java. Dentro classe Depto.java que não é a “dona” do relacionamento, ou seja ela somente lista os funcionários do departamento mas não cadastra funcionarios (não é o lado dominante).

Figura exemplificando o uso de mapped by que nesse caso o valor do mapped by deve ser o nome do atributo que expressa o mesmo relacionamento na outra entidade.

O CRUD é feito mesmo jeito que nos posts anteriores. Próximo post: Relacionamento ManyToMany com atributos.

Esse post foi publicado em TDSI - Tópicos em Desenvolvimento de Sistemas de Informação I e III. Bookmark o link permanente.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s