Converte sql para Hql

16/05/2017

0

codigo sql :

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

John Lima

Responder

Posts

17/05/2017

Gabriel Baltazar

Como estão mapeadas as classes? O nome dos atributos e tal...
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
Responder

17/05/2017

John Lima

get e set omitidos
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;
}
Responder

17/05/2017

Gabriel Baltazar

veja se funciona.

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
Responder

17/05/2017

John Lima

já havia testado assim apresenta o seguinte erro :

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]
Responder

18/05/2017

Alexandro Feltrin

Bom dia John,

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
Responder

19/05/2017

John Lima

could not resolve property: Funcao of: com.chronos.modelo.entidades.PapelFuncao [select pf from com.chronos.modelo.entidades.PapelFuncao pf , com.chronos.modelo.entidades.Usuario u join pf.Funcao f join pf.Papel p where u.id = 1 and u.papel.id = p.id]
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar