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.