Fórum Converte sql para Hql #581441
16/05/2017
0
select * from papel_funcao pf
inner join funcao f on(f.id = pf.id_funcao)
inner join papel p on(p.id = pf.id_papel)
inner join usuario u on(u.id_papel = p.id)
where u.id = 1
como ficaria se fosse pra hql
extrtura
Usuario tem relacao com papel
Papel Tem relacao com PapelFuncao
PapelFuncao tem relcao Com Funcao
John Lima
Curtir tópico
+ 0Posts
17/05/2017
Gabriel Baltazar
Seria mais ou menos assim.
select pf from PapelFuncao pf
join Funcao f on pf.idFuncao = f.id
join Papel p on pf.idPapel = p.id
join Usuario u on p.id = u.idPapel
where u.id = 1
Gostei + 0
17/05/2017
John Lima
public class PapelFuncao implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID")
private Integer id;
@Column(name = "PODE_CONSULTAR")
private String podeConsultar;
@Column(name = "PODE_INSERIR")
private String podeInserir;
@Column(name = "PODE_ALTERAR")
private String podeAlterar;
@Column(name = "PODE_EXCLUIR")
private String podeExcluir;
@Column(name = "HABILITADO")
private String habilitado;
@JoinColumn(name = "ID_PAPEL", referencedColumnName = "ID")
@ManyToOne(optional = false)
private Papel papel;
@JoinColumn(name = "ID_FUNCAO", referencedColumnName = "ID")
@ManyToOne(optional = false)
private Funcao funcao;
}
public class Funcao implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID")
private Integer id;
@Column(name = "DESCRICAO_MENU")
private String descricaoMenu;
@Column(name = "IMAGEM_MENU")
private String imagemMenu;
@Column(name = "METODO")
private String metodo;
@Column(name = "NOME")
private String nome;
@Column(name = "FORMULARIO")
private String formulario;
}
public class Papel implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID")
private Integer id;
@Column(name = "NOME")
private String nome;
@Column(name = "DESCRICAO")
private String descricao;
@Column(name = "ACESSO_COMPLETO")
private String acessoCompleto;
}
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID")
private Integer id;
@Column(name = "LOGIN")
private String login;
@Column(name = "SENHA")
private String senha;
@Temporal(TemporalType.DATE)
@Column(name = "DATA_CADASTRO")
private Date dataCadastro;
@Column(name = "ADMINISTRADOR")
private String administrador;
@JoinColumn(name = "ID_COLABORADOR", referencedColumnName = "ID")
@ManyToOne(optional = false,fetch = FetchType.LAZY)
private Colaborador colaborador;
@JoinColumn(name = "ID_PAPEL", referencedColumnName = "ID")
@ManyToOne(optional = false)
private Papel papel;
}
Gostei + 0
17/05/2017
Gabriel Baltazar
select pf from PapelFuncao pf
join Funcao f on pf.funcao.id = f.id
join Papel p on pf.papel.id = p.id
join Usuario u on u.papel.id = p.id
where u.id = 1
Gostei + 0
17/05/2017
John Lima
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! [select pf from com.chronos.modelo.entidades.PapelFuncao pf join Funcao f on pf.funcao.id = f.id join Papel p on pf.papel.id = p.id join Usuario u on p.id = u.papel.id where u.id = 1]
Gostei + 0
18/05/2017
Alexandro Feltrin
Acredito que não tenha o "on" na query, seria algum assim:
select pf from PapelFuncao pf , Usuario u
join pf.Funcao f
join pf.Papel p
where u.id = 1 and u.papel.id = p.id
Gostei + 0
19/05/2017
John Lima
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)