Consulta por mapeamento

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]