我是Spring Framework的新手,在从应用程序检索本机查询结果时遇到麻烦。该应用程序应该从我的PostgreSQL数据库中检索一些特定的数据,并将其公开为REST资源。但是,似乎无法将查询结果映射到我定义的实体对象中。定义对象的方式与创建数据库的方式相同:我还对记录器应用程序的插入操作使用了相同的实体。
我创建了一个Entity类:
package com.umeter.rest;
import ...
@Entity
@Table(name="dati_impianti")
public class DatiImpiantoEntity {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer id_lettura;
@Column(name="sigla_impianto")
private String sigla_impianto;
@Column(name="timestamp")
private Date timestamp;
@Column(name="lettura")
private Float lettura;
@Column(name="stato")
private Integer stato;
public Integer getId_lettura() {
return id_lettura;
}
public void setId_lettura(Integer id_lettura) {
this.id_lettura = id_lettura;
}
public String getSigla_impianto() {
return sigla_impianto;
}
//other Getters and Setters
一个Repository类(使用随机nativequery只是为了尝试一下)。
编辑:是的,需要使用本机查询,因为我将使用来自Postgresql的某些本机功能,这些功能无法通过可用的常规CRUD方法获得。但是,这似乎不是问题,因为我尝试使用“ findAll()”方法只是为了获得完全相同的[null]输出
package com.umeter.rest;
import ...
@Repository
public interface DatiRepository extends CrudRepository<DatiImpiantoEntity, Integer> {
@Query(nativeQuery = true, value = "SELECT * from dati_impianti LIMIT 10")
public List<DatiImpiantoEntity> getIstantanea();
}
还有一个REST控制器:
package com.umeter.rest;
import ...
@RestController
@RequestMapping(path="/api")
public class DatiRestController {
@Autowired
private DatiRepository datiRepository;
@GetMapping(path="/istantanea")
public @ResponseBody List<DatiImpiantoEntity> getIstantanea() {
return datiRepository.getIstantanea();
}
}
但是,我得到的结果是一个空值列表(我想Spring无法将查询结果映射到我的Entity对象中):
[null,null,null,null,null,null,null,null,null,null]
当我使用通用的“对象”返回类型(不包括数据库连接或查询问题)设置方法时,会得到输出。但是,我得到的不是正确的Json输出格式,我现在知道这应该是这样的:
[["MF1","2019-10-11T10:24:23.917+0000",3.814,6,null],["MF1","2019-10-11T10:24:33.867+0000",3.814,6,null],["MF1","2019-10-11T10:24:43.920+0000",3.814,6,null],["MF1","2019-10-11T10:24:53.884+0000",3.814,6,null],["MF1","2019-10-11T10:25:03.864+0000",3.814,6,null],["MF1","2019-10-11T10:25:13.869+0000",3.814,6,null],["MF1","2019-10-11T10:25:23.872+0000",3.814,6,null],["MF1","2019-11-08T13:17:35.175+0000",5511.1,0,null],["MF2","2019-11-08T13:17:35.174+0000",6567.025,0,null],["MF1","2019-11-08T13:25:25.655+0000",5548.027,0,null]]
数据库表dati_impianti
的所有记录的ID值均为空。不适用于CrudRepository
。该id
字段在所有记录中必须具有唯一值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句