Relacionamento @ManyToMany é correto codificar a tabela associativa?

,

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:

  • Buscar somente dados de A: select comum
  • Buscar somente dados de B: select comum
  • Buscar elementos de A e B em que A e B existam: inner join
  • Buscar elementos de A independente de B: left join com B à esquerda
  • Buscar elementos de B independente de A: left join com A à esquerda

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.