2012-09-04 4 views
9

아래 코드를 사용하여 쿼리 결과를 얻을 수 없습니다. 내가 Map<ContentType... 또는 Map<String... 사용 여부 저도 같은 오류가 발생합니다 : javax.persistence.NonUniqueResultException : 결과는 JPA는 저장소에서 여러 행을 처리 할 수 ​​있어야합니다 것 같다 두 개 이상의 요소JPA Repository : javax.persistence.NonUniqueResultException : 결과가 둘 이상의 요소를 반환합니다.

를 반환합니다. 나는 단지 누락되었을 수있는 결과물을 찾는 데 어려움을 겪고있는 다른 특수 효과를 둘러 보았습니다.

이 문제를 해결하기 위해 내가해야 할 일이 있습니까?

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

} 
+2

에서 해당 모델을 유지

작동이보십시오,이뿐만 아니라 JPA는, 그것은 스프링 데이터 JPA 것 같습니다. – madth3

답변

5

이 문제가 JPA가에 매핑을 좋아하지 않는다, 그래서 Map<ContentType, Integer>이, 고유 인덱스의 약속이 없다는 것을 나타납니다. 대신 List<Map<ContentType, Integer>>을 사용하면 멋지게 작동합니다!

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

} 

then in your repository

@Override 
public void delete(List<Driver> delete_driver) { 

    driverRepository.delete(delete_driver); 
} 
관련 문제