使用以下代码我无法获得查询结果。无论我使用Map<ContentType...
还是Map<String...
,我都会遇到同样的错误:javax.persistence.NonUniqueResultException:result返回多个元素
似乎JPA应该能够处理存储库中的多个行。我四处寻找其他可能缺少的注释,并且很难得出结果。
有关解决此问题的建议吗?
@Transactional
public interface ContentRepository extends JpaRepository<Content,Integer>{
....
@Query(nativeQuery=true, value="SELECT content_type, COUNT(*) AS myColumn FROM dbo.content GROUP BY content_type")
Map<ContentType, Integer> getContentCountByType();
}
答案 0 :(得分:6)
问题似乎是Map<ContentType, Integer>
没有唯一索引的承诺,因此JPA不喜欢映射到它。相反,使用List<Map<ContentType, Integer>>
,效果很好!
答案 1 :(得分:0)
尝试此功能
将您的模型保留在列表中
@RequestMapping(value="/deleteDriver/{id}" , method=RequestMethod.POST)
public ResponseEntity<Object> deleteDriver(@PathVariable("id") Integer id)
{
List<Driver> delete_driver=adminService.getDriverById(id);
Map<String,Object> response=new HashMap<>();
if(delete_driver==null)
{
response.put("status", "Failure");
return new ResponseEntity<Object>(response,HttpStatus.NO_CONTENT);
}
else
{
response.put("status", "Success");
adminService.delete(delete_driver);
return new ResponseEntity<Object>(response,HttpStatus.OK);
}
}
然后在您的存储库中
@Override
public void delete(List<Driver> delete_driver) {
driverRepository.delete(delete_driver);
}