Converte sql para Hql
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
Posts
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
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; }
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
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]
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
19/05/2017
John Lima
Clique aqui para fazer login e interagir na Comunidade :)