Ajuda: ManyToMany no Hibernate

1 resposta
painkiller

Bom dia amigos, estou com um problema... já procurei aqui no fórum, achei vários posts mas nenhum sanou direito minha dúvida. Estou fazendo um projeto usando JSF e Hibernate, tenho uma duas tabelas no banco, que representam equipamentos e função, que gera um relacionamento muitos pra muitos. Um equipamento pode ter várias funções e uma função pode pertencer a vários equipamentos... a minha dúvida é como usar isso no hibernate, já tentei usar o mapeamento ManayToMany mas no fim das contas me enrolo. Tipo, na minha página eu tenho uma tabela que lista os dados do equipamento juntamente com a descrição da função, ou seja tem um join aí. A minha dúvida era como eu fazer pra fazer esse mapeamento e essa consulta pra retornar para a página.

Classe equipamento
public class Equipamento implements Serializable {
   
    private Integer id;
    private String nome;
    private String marca;
    private List<EquipamentoFuncao> funcoes;

    @Id
    @Column(name = "idequipamento")
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name = "nome")
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Column(name = "marca")
    public String getMarca() {
        return marca;
    }

    public void setMarca(String marca) {
        this.marca = marca;
    }

    public List<EquipamentoFuncao> getFuncoes() {
        return funcoes;
    }

    public void setFuncoes(List<EquipamentoFuncao> funcoes) {
        this.funcoes = funcoes;
    }

Classe Função

public class EquipamentoFuncao implements Serializable {

    public EquipamentoFuncao() {
    }
    private String especificacao;
    private Integer id;
    private List<Equipamento> equipamento;

    public EquipamentoFuncao(String especificacao) {
        this.especificacao = especificacao;
    }

    @Override
    public String toString() {
        return this.getEspecificacao();

    }

    @Column(name = "especificacao")
    public String getEspecificacao() {
        return especificacao;
    }

    public void setEspecificacao(String especificacao) {
        this.especificacao = especificacao;
    }

    @Id
    @Column(name = "idfuncao")
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public List<Equipamento> getEquipamento() {
        return equipamento;
    }

    public void setEquipamento(List<Equipamento> equipamento) {
        this.equipamento = equipamento;
    }

No caso como eu mapearia aí esse relacionamento, eu deveria também mapear a tabela equipamento_has_funcao que eu tenho no banco? E no caso do retorno como eu faria pra retornar na página, sei que o método retornaria um List que eu converteria em DataModel para poder lançar na tabela, mas aí os campos lá são: cod do equipamento, nome do equipamento, marca do equipamento e funcão... sendo que essa função seria a especificação da tabela funcao... como colocar pra listar isso sendo que no list que retornar terão valores de equipamento e funcao... to meio confuso quanto a isso... Agradeço muito se puderem me ajudar!! Abração!!

1 Resposta

Tiburcio_Mancha

A regra para relacionamentos Many to Many é criar uma tabela adicional na qual receberá as chaves das outras entidades, no seu caso, equipamentos e funções.

A partir disto, vc cria uma nova entidade que representa esta tabela e realiza o mapeamento OneToMany com equipamentos e funções.

Criado 25 de setembro de 2010
Ultima resposta 25 de set. de 2010
Respostas 1
Participantes 2