14

使用下面的代码我无法得到我的查询结果。无论我使用Map<ContentType...还是Map<String...我得到相同的错误:javax.persistence.NonUniqueResultException:结果返回多个元素

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();

}
4

2 回答 2

8

似乎问题在于Map<ContentType, Integer>它没有唯一索引的承诺,因此 JPA 不喜欢映射到它。通过使用List<Map<ContentType, Integer>>,它工作得很好!

于 2012-09-05T15:16:46.573 回答
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);
}
于 2017-09-25T11:46:12.610 回答