Bom dia a todos,
Eu tenho duas entidades onde elas possue um relacionamento @ManyToMany, logo eu tenho uma tabela deste relacionamento. Gostaria de saber como eu faço uma consulta desta tabela que está sendo relacionada.
Meu mapeamento:
@ManyToMany
@JoinTable(name="sistema_perfilusuario",
joinColumns = {@JoinColumn(name="idSistema")},
inverseJoinColumns = {@JoinColumn(name="idUsuario")})
private List<PerfilUsuario> usuarios;
Eu queria fazer assim:
select p from sistema_perfilusuario p.
Exception que eu estou recebendo.
Desde já. obrigado a todos!
Se você não criou uma classe para representar a tabela de relacionamento, você não vai conseguir dar o select nela… pois pelo que vi você só fez o “JoinTable” né?
Desculpa a pergunta, mas para que você quer dar um select nessa tabela .-.?
JPQL funciona com consulta em cima da classe e não em cima da tabela.
Vai dar erro sempre que você tentar fazer buscando por algo específico do banco.
Faça a consulta em cima da Classe e não do banco de dados.
Eu tenho uma entidade Usuario e uma entidade Sistema onde um Usuario pode estar em varios sistemas. Sendo assim no meu relacionamento @ManyToMany se cria a tabela associativa. E eu só o registro desses mapeamentos nesta tabela. Como ficaria então a consulta?
[quote=luis.feitoza]Eu tenho uma entidade Usuario e uma entidade Sistema onde um Usuario pode estar em varios sistemas. Sendo assim no meu relacionamento @ManyToMany se cria a tabela associativa. E eu só o registro desses mapeamentos nesta tabela. Como ficaria então a consulta?[/quote]Você tentou? Qual erro você teve?
Você faz a pesquisa pelo relacionamento Java e não pelas tabelas. Se sua classe tem o objeto lá dentro, você relaciona direto lá dentro. [=
Esse post vai te ajudar: JPA Consultas e Dicas
Bom dia,
Estou tentando fazer desta forma.
Quando eu vejo no modo debug ele não passa da consulta e eu acabo recebendo está execeção.
Segue minhas entidades.
Entidade PerfilUsuario:
[code]@Entity
@SessionScoped
public class PerfilUsuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long idUsuario;
@NotEmpty
private String login;
@NotEmpty
private String senha;
@NotEmpty
private String nome;
@NotEmpty
private String endereco;
@NotEmpty
private String telefone;
@NotEmpty
private String rg;
@NotEmpty
private String cpf;
private String complemento;
@NotEmpty
@Pattern(regexp = "^([0-1][0-9]|[2][0-3])(:([0-5][0-9])){1,2}$", message = "Hora inválida.")
private String horaTrabalhada;
@NotEmpty
private String sexo;
@Enumerated(EnumType.STRING)
private TipoUsuario tipoUsuario;
@Enumerated(EnumType.STRING)
private TipoFuncionario tipoFuncionario;
@ManyToMany(mappedBy="usuarios", fetch= FetchType.EAGER)
private List<Sistema> sistemas;[/code]
Entidade Sistemas:
[code]@Entity
public class Sistema implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long idSistema;
private String nomeSistema;
private String descricao;
@ManyToMany
@JoinTable(name="sistema_perfilusuario",
joinColumns = {@JoinColumn(name="idSistema")},
inverseJoinColumns = {@JoinColumn(name="idUsuario")})
private List<PerfilUsuario> usuarios;[/code]