Boa tarde.
Pesquisando em vários tópicos sobre o relacionamento @ManyToMany o pessoal orienta a não codificar a tabela associativa, é errado criá-la? Não criá-la é a melhor prática. Terei problemas em codificar a tabela?
Boa tarde.
Pesquisando em vários tópicos sobre o relacionamento @ManyToMany o pessoal orienta a não codificar a tabela associativa, é errado criá-la? Não criá-la é a melhor prática. Terei problemas em codificar a tabela?
Diga o que está precisando atender.
A maioria das discussões sobre este tema vão levar em conta os aspectos mais corriqueiros e estes não consideram a criação de uma entidade separada para representar a tabela associativa.
Neste caso, você, tendo essa necessidade, deve proceder conforme o que necessita.
Entendi darlan_machado.
Quando tento consultar os registros de uma tabela associativa em uma relação @ManyToMany, tenho o retorno que ela não está mapeada. Estou fazendo da seguinte forma select na from NivelAutoridade as na, usulog_nivaut as un, UsuarioLogin as ul where (na.id = un.nivaut_id and un.usu_id = ul.id) and ul.id =:usuarioLogin
, no caso usulog_nivaut
é a essa tabela. Pode me exemplificar uma simples consulta a uma terceira tabela “associativa” em uma relação @ManyToMany? Preciso retornar esses registros em uma <p:dataTable
.
Independente de onde você precisa destes dados, é fundamental lembrar que precisa mapear a classe que representa a tal tabela, utilizando @Entity e, se necessário, @Table
Pra que eu entenda, então em uma relação @ManyToMany como a acima, se eu for precisar consultar os registros de NivelAutoridade
relacionado a UsuarioLogin
eu sempre precisarei mapear a tabela associativa, é isso mesmo? Ou há outra forma de fazê-lo?
Toda relação many to many nasce da necessidade de você associar um ou mais elementos da tabela A com um ou mais elementos da tabela B.
Como não é interessante criar N colunas para representar as diversas FKs que cada tupla poderia ter, cria-se a tabela associativa.
Desta maneira, existem algumas situações específicas nos selects:
Dependendo da tua necessidade, você sim, precisa referenciar a tabela associativa.
A questão é: você precisa fazer isso no mapeamento do JPA?
Se você não precisa inserir dados específicos à tabela associativa, você não precisa criar uma entidade que a represente. E a maioria dos casos funciona assim.
Por outro lado, se você precisa, então é fundamental criar e mapear corretamente.