Executar view com HQL

Salve pessoal,

Tenho uma dúvida… Dei uma pesquisada, mas não encontrei nda a respeito… Eu tenho em meu BD algumas views criadas para resolver alguns problemas de consultas com tabelas que estão como especialização/generalização… Minha pergunta é: Existe alguma maneira, via HQL de eu executar uma dessas views para pegar o seu resultado e polular um managedBean por exemplo?

Da sim, vc pode executar as consultas diretamente via SQLQuery, pode usar o SQLQuery para retornar uma entidade(as colunas retornadas pelo devem ter os campos da entidade) ou até mesmo mapear suas VIEWS para entidade.

Direto

SQLQuery sq = session.createSQLQuery("SELECT ID AS ID_PESSOA, NOME AS NOM_PESSOA FROM vw_pessoa WHERE NOME LIKE :nome"); sq.setParameter("nome", "%teste%"); List<Object[]> list = sq.list(); ... Object[] obj = list.get(0); Pessoa p = new Pessoa(); p.setId((Integer) obj[0]); p.setNome((String) obj[1]);

Com entidade:

[code]@Entity
class Pessoa {
@Column(name=“ID_PESSOA”)
private Integer id;
@Column(name=“NOM_PESSOA”)
private String nome;
}

SQLQuery sq = session.createSQLQuery(“SELECT ID AS ID_PESSOA, NOME AS NOM_PESSOA FROM vw_pessoa WHERE NOME LIKE :nome”);
sq.addEntity(Pessoa.class);
sq.setParameter(“nome”, “%teste%”);
List list = sq.list();[/code]

Mapeado:

@Entity @Table(name = "vw_pessoa") class Pessoa { @Column(name="ID") private Integer id; @Column(name="NOME") private String nome; }

[color=red]Digitei esses códigos direto aqui, então pode haver alguns erros, mas a ideia é essa.[/color]

Se você mapeou a view como demonstrou na ultima listagem, é só executar como se estivesse executando uma consulta normal em HQL. A view é um tabela, então mapeada, funciona exatamente da mesma forma que uma simples tabela.

entendí… vou ter que ver agora com o pessoal que fez os confs se essas views foram mapeadas. vlw a tds pela ajuda.