【发布时间】:2017-09-19 22:28:38
【问题描述】:
我正在使用 Java Spring Boot 构建一个 rest API,我遇到了一个问题,我有一个带有方法的以下类(它在我的控制器中用于测试目的,我稍后会将其逻辑发送到服务):
@RestController
@RequestMapping("/api/readings")
public class Readings {
@Autowired
private ReadingService readingService;
@RequestMapping(method = RequestMethod.GET, produces = "application/json")
public List<Reading> getRelevant(@RequestParam("start") String start, @RequestParam("end") String end){
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS");
start += " 00:00:00";
end += " 23:59:59";
try {
Date startdate = df.parse(start);
Date enddate = df.parse(end);
return readingService.getRelevant(startdate, enddate);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
}
这利用了调用以下存储库函数的服务:
@Query("SELECT pmtwofive, pmten, recording FROM Reading WHERE recording >= ?1 AND recording <= ?2")
List<Reading> getRelevant(Date start, Date end);
一切正常,除了结果的格式:
[[10,20,1505801743816],[14,21,1505802311976],[14,21,1505802330610],[10,13,1505803302960],[10,13,1505803321966]]
而不是这个,我期待像我在使用休眠中的 CrudRepository 查询我的整个表时得到的东西,而不是仅仅这三个值:
{
{
pmtwofive: 10,
pmten: 20,
reading: 1505801743816
},
{
...
}
}
我应该怎么做才能获得预期的结果?谢谢!
Reading Class:
package com.amione.models;
import javax.persistence.*;
import java.sql.Timestamp;
@Entity
public class Reading {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(columnDefinition = "serial")
private long reading_id;
private int sensor_id;
private int function;
private int directionstart;
private int pmtwofive;
private int pmten;
private int checksumlow;
private int checksumhigh;
private Timestamp recording;
public long getReading_id() {
return reading_id;
}
public void setReading_id(int reading_id) {
this.reading_id = reading_id;
}
public int getSensor_id() {
return sensor_id;
}
public void setSensor_id(int sensor_id) {
this.sensor_id = sensor_id;
}
public int getFunction() {
return function;
}
public void setFunction(int function) {
this.function = function;
}
public int getDirectionstart() {
return directionstart;
}
public void setDirectionstart(int directionstart) {
this.directionstart = directionstart;
}
public int getPmtwofive() {
return pmtwofive;
}
public void setPmtwofive(int pmtwofive) {
this.pmtwofive = pmtwofive;
}
public int getPmten() {
return pmten;
}
public void setPmten(int pmten) {
this.pmten = pmten;
}
public int getChecksumlow() {
return checksumlow;
}
public void setChecksumlow(int checksumlow) {
this.checksumlow = checksumlow;
}
public int getChecksumhigh() {
return checksumhigh;
}
public void setChecksumhigh(int checksumhigh) {
this.checksumhigh = checksumhigh;
}
public Timestamp getRecording() {
return recording;
}
public void setRecording(Timestamp recording) {
this.recording = recording;
}
}
【问题讨论】:
-
你的阅读课是什么样子的?
-
@caiocpricci2 我用添加的课程更新了问题!
-
你从哪里得到
[[10,20,1505801743816],[14,21,1505802311976],[14,21,1505802330610],[10,13,1505803302960],[10,13,1505803321966]]???它来自您的客户端吗?或者你只是从你的服务器端打印它? -
客户端,正在运行:
http://localhost:8000/api/readings?start=2017-09-19&end=2017-09-19 -
检查如果您使用
findAll()或findOne()代替您的计划查询,甚至是return new Reading()并填写了一些数据,是否会出现相同的结果。这只是为了排除该存储库正在做某事喜欢这里。
标签: java json spring hibernate