将查询结果映射到REST API的对象

马斯塔里乌斯:

我是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]]

为了完整起见,我附上一张数据库数据结构的图片(id似乎并没有真正使用,但是在插入过程中是Spring所必需的): 数据库结构

Harihar Das:

数据库表dati_impianti的所有记录的ID值均为空。不适用于CrudRepositoryid字段在所有记录中必须具有唯一值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将休眠查询的结果映射到DTO对象?

Spring-Data + QueryDSL + JDBC:如何将查询结果映射到域对象?

如何使用Hibernate将SQL查询的结果最好地映射到非实体Java对象?

AutoMapper - 将两个外部 API 结果映射到一个 DTO 对象中

将Neo4J结果映射到Java对象

将SQL结果映射到Java对象的策略

将SqlDataReader结果映射到对象的最快方法

流类型-将函数对象映射到函数结果

用于将API对象映射到UI模型对象的模式

将选择查询映射到对象会在linq中出错

角度-将Google Maps API结果映射到表单-如何映射两个长度不等但共享公用密钥的对象

TypeScript:将类型映射解析器对象映射到结果类型

将数组映射到对象

将文档映射到对象

JPA结果集映射到新对象

将嵌套对象从fxml映射到对象

REST-JSONrequest映射到Java对象

映射到Spring MVC REST中的对象

如何将RealmDB结果对象正确映射到SwiftUI列表?

将2个分组的结果映射到Rails中的二维对象

C#实体框架:将选择结果映射到对象列表

我们如何使用 java 将复杂的 NativeQuery 结果映射到 DTO 对象

MongoDB:如何将分面结果映射到键和值的单个对象中

将原始SQL结果映射到.NET Core中的对象列表

如何将Json对象映射到JPA规范以进行搜索查询

映射到Select中的对象时,EF Core将查询SQL中的所有列

将JPA或Hibernate投影查询映射到DTO(数据传输对象)

在REST安全中,将响应映射到对象时如何解决UnrecognizedPropertyException?

将REST URL模式映射到Siesta框架的模型对象的最佳方法是什么?