[RESOLVIDO] - Ocultando Campo em Retorno de JPA

6 respostas
Jedi_FeniX

Existe alguma maneira de mapear uma entidade e no retorno de algumas queries alguns campos serem ocultados? Por exemplo:

Entidade
@Entity
public class EntityTest {

   @Id
   @Column(name = "id_entity")
   private Long id;

   @Colum(name = "field_a")
   private String a;
}
Query:
select id from entity;

Desde já agradeço a ajuda.

6 Respostas

Hebert_Coelho

Se você está chamando de ocultar apenas não retornar algum atributo, não existe necessidade alguma disso.

A analise da quer vai ser o mesmo, a não ser que sua entidade tenha uns 100 atributos.

select d.id from Dado d

fredericomaia10

A forma que o Hebert falou funciona.

No caso seria retornado apenas um long e não a entidade populada.

Jedi_FeniX

Seria isso mesmo Hebert.

O projeto estava usando native query por isso dava erro na hora de retornar só alguns campos, passei algumas queries para EJB-QL.

Só que acabou gerando um outro erro, quando eu escolho o campo que deve ser retornado eu recebo um Object, que irá me obrigar a fazer o bind na mão, isso estaria certo?

Hebert_Coelho

Aqui mostra como fazer as queries: JPA Consultas e Dicas.

Se você está usando EJBQL eu não sei como funciona direito a consulta por ele.

Se for JPQL/HQL aí sim o link acima funciona.

fredericomaia10

EJB-QL também não sei como funciona.

Mas se for com JPQL, quando você escolhe os atributos que devem vir, você recebe sim um Array de Object.

Você pode criar um construtor na sua entidade com os parâmetros que está buscando e receber sua própria entidade.

Ou iterar o array, popular e instanciar sua entidade na mão.

Veja este post, pode te ajudar. http://blog.caelum.com.br/jpa-com-hibernate-heranca-e-mapeamentos/

Jedi_FeniX

Muito obrigado pelos links me ajudaram muito!

E pela solução dada!

Criado 2 de abril de 2013
Ultima resposta 4 de abr. de 2013
Respostas 6
Participantes 3