HIBERNATE(MySQL 5.5): "Projections" em HQL

4 respostas
ByIvo

Segue as classes:

class Imagem{

private Integer id;
 private byte[] imgBytes;
 private String nome;

 public Imagem(){}

 public Imagem(Integer id,String nome){
 this.id = id;
 this.nome = nome;
 }

 //GETTERS AND SETTERS

}

class Pessoa{

private Integer id;

private String nome;

private Imagem image;

//GETTERS AND SETTERS

}

Galera, eu quero trazer do banco um objeto Pessoa que contenha uma instância de Imagem, porém sem seus byte[], para não deixar o objeto “pesado”.
O Script HQL usa um construtor para fazer esses projections, ou seja, o segundo construtor de Imagem é usado para trazer o objeto sem seus byte[]:
“SELECT img FROM Imagem(id,nome) img WHERE img.id = :id”;

Agora minha dúvida é como fazer um SELECT trazendo as Pessoas com suas Imagens, porém sem os byte[] da classe Imagem, contida em Pessoa.

4 Respostas

Hebert_Coelho

Esse tipo de consulta não é possível com HQL.

Aqui mostra possíveis consultas com HQL/JPQL: JPA Consultas e Dicas.

Seria necessário utilizar NativeQuery que irá retornar object.

ByIvo

Hebert Coelho:
Esse tipo de consulta não é possível com HQL.

Aqui mostra possíveis consultas com HQL/JPQL: JPA Consultas e Dicas.

Seria necessário utilizar NativeQuery que irá retornar object.

Muito obrigado Hebert pela informação e pelo link.
Darei meus pulos pra contornar esse problema :slight_smile:

ByIvo

Bom, se não me engano, isso é possível através de Criteria usando Alias e Projections, certo?

Hebert_Coelho

ByIvo:
Bom, se não me engano, isso é possível através de Criteria usando Alias e Projections, certo?
Também.
Eu não utilizo muito criteria, utilizo mais jpql/hql mesmo. [=

Criado 21 de novembro de 2012
Ultima resposta 21 de nov. de 2012
Respostas 4
Participantes 2