1
resposta

Consulta sem nome dos campos na List de retorno

Olá Estou desenvolvendo uma API, que precisa devolver um json para o front-end. Quando realizo a consulta usando jpql, e fazendo um "select *" ele retorna a lista com o nome dos campos corretamente. Caso eu faça um select por campo, na list ele não devolve o nome dos campos, apenas os valores de cada atributo. Alguém poderia me ajudar?

A model Seguem os códigos:

@Entity @Getter @Setter @Table(name = "SENSORES_GERAL") public class SensoresGeral {

@Id
@Column(name = "E3TIMESTAMP")
public Date e3TimeStamp;
@Column(name = "AIT_100_001")
public float ait100001;
@Column(name = "AIT_100_001_QUALITY")
public int ait100001Quality;
@Column(name = "CR1_DENSIDADE")
public float cr1Densidade;
@Column(name = "CR1_DENSIDADE_QUALITY")
public int cr1DensidadeQuality;
@Column(name = "CR1_NIVEL")
public float cr1Nivel;
@Column(name = "CR1_NIVEL_QUALITY")
public int cr1NivelQuality;
@Column(name = "FIT_100_003")
public float fit100003;
@Column(name = "FIT_100_003_QUALITY")
public int fit100003Quality;
@Column(name = "FIT_100_004")
public float fit100004;
@Column(name = "FIT_100_004_QUALITY")
public int fit100004Quality;
@Column(name = "FIT_100_043")
public float fit100043;
@Column(name = "FIT_100_043_QUALITY")
public int fit100043Quality;
@Column(name = "LT_100_005")
public float lt100005;
@Column(name = "LT_100_005_QUALITY")
public int lt100005Quality;
@Column(name = "LT_100_006")
public float lt100006;
@Column(name = "LT_100_006_QUALITY")
public int lt100006Quality;
@Column(name = "PT_100_007A")
public float pt100007a;
@Column(name = "PT_100_007A_QUALITY")
public int pt100007aQuality;
@Column(name = "PT_100_007B")
public float pt100007b;
@Column(name = "PT_100_007B_QUALITY")
public int pt100007bQuality;
@Column(name = "PT_100_007C")
public float pt100007c;
@Column(name = "PT_100_007C_QUALITY")
public int pt100007cQuality;
@Column(name = "TT_100_008")
public float tt100008;
@Column(name = "TT_100_008_QUALIITY")
public int tt100008Quality;
@Column(name = "TT_100_009")
public float tt100009;
@Column(name = "TT_100_009_QUALITY")
public int tt100009Quality;
@Column(name = "TT_100_010A")
public float tt100010a;
@Column(name = "TT_100_010A_QUALITY")
public int tt100010aQuality;
@Column(name = "TT_100_010B")
public float tt100010b;
@Column(name = "TT_100_010B_QUALITY")
public int tt100010bQuality;
@Column(name = "TT_100_011")
public float tt100011;
@Column(name = "TT_100_011_QUALITY")
public int tt100011Quality;
@Column(name = "TT_100_044")
public float tt100044;
@Column(name = "TT_100_044_QUALITY")
public int tt100044Quality;
@Column(name = "LV_100_007")
public float lv100007;
@Column(name = "LV_100_007_QUALITY")
public int lv100007Quality;
@Column(name = "FV_100_103")
public float fv100103;
@Column(name = "FV_100_103_QUALITY")
public int fv100103Quality;
@Column(name = "LV_100_005")
public float lv100005;
@Column(name = "LV_100_005_QUALITY")
public int lv100005Quality;
@Column(name = "DIF_TEMP_CR1")
public float difTempCr1;
@Column(name = "DIF_TEMP_CR1_QUALITY")
public int difTempCr1Quality;
@Column(name = "FIT_100_002")
public float fit100002;

A DAO package iipp.dao;

import iipp.model.SensoresGeral; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query;

import java.util.Date; import java.util.List;

public interface SensoresGeralDao extends JpaRepository<SensoresGeral, Date> {

@Query(" SELECT model.e3TimeStamp , model.fit100002  FROM SensoresGeral model  WHERE ROWNUM <= 100")
List<SensoresGeral> getLast1000();

}

O Json de retorno, sem os campos e3TimeStamp e fit100002

[ "2020-04-07T11:34:51.000+0000", 0.413 ],

1 resposta

Olá Raphael, tudo bem? Peço desculpas pela demora em ti responder! Acho estranho que usando o select * from <restante do comando> você tenha conseguido os nomes das colunas, mas se for realmente isso que você está buscando, você deveria usar o Metamodel que é o objeto responsável por saber todas as informações sobre uma entidade, em seguida você poderia recuperar o EntityType da entidade usando o entity do metamodel, um ponto de partida para que você conseguia fazer isso é usar algo como:

Metamodel metamodel = entityManager.getMetamodel();
EntityType<SensoresGeral> sensoresGeral_  = metamodel.entity(SensoresGeral.class);

Espero ter ajudado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software