我使用Spring hibernate和JPA Repository将值作为JSON返回。它适用于所有默认情况。我在CrudRepository中遇到自定义查询问题,将聚合值作为JSON返回。
CrudRepository
@Repository
public interface ExpenseRepository extends CrudRepository<Expense, Integer>{
@Query("SELECT min(dtDate) as dtDate ,Max(dtDate) as dtDate FROM Expense")
Iterable<Expense> getAvlRptDates();
}
注意:我已尝试使用和不使用Alias,List等。
控制器
@ResponseBody
@RequestMapping(value="/getAvlExpMonthYear",method=RequestMethod.GET)
public Iterable<Expense> getAvlRptDates(){
//String test = testRepo.findAll().toString();
return expRepo.getAvlRptDates();
}
我也尝试过List。我知道使用自定义代码或其他dto类转换为JSON。
如果没有为两个字段创建额外的域类或dto类,请告诉我。
答案 0 :(得分:0)
更改此:
@Repository
public interface ExpenseRepository extends CrudRepository<Expense, Integer>{
@Query("SELECT min(dtDate) as dtDate ,Max(dtDate) as dtDate FROM Expense")
Iterable<Expense> getAvlRptDates();
}
对于以下内容,将Iterable更改为Optional,以返回Jsons列表:
@Repository
public interface ExpenseRepository extends CrudRepository<Expense, Integer>{
@Query("SELECT min(dtDate) as dtDate ,Max(dtDate) as dtDate FROM Expense")
Optional<Expense> getAvlRptDates();
}
现在,您将获得某种JSON,但不会获得符合官方标准的JSON。
所以我的建议是:
@Repository
public interface ExpenseRepository extends CrudRepository<Expense, Integer>{
@Query("SELECT min(dtDate) as dtDate ,Max(dtDate) as dtDate FROM Expense")
Expense[] getAvlRptDates();
}
在返回单个iterable的地方,然后将iterable的内容一一转换为json。参见下面的链接:
How to convert list data into json in java
希望有帮助。