Repositório JPA: javax.persistence.NonUniqueResultException: resultado retorna mais de um elemento

10

Usando o código abaixo, não consigo obter os resultados da minha consulta. Se eu uso Map<ContentType... ou Map<String... , recebo o mesmo erro: javax.persistence.NonUniqueResultException: resultado retorna mais de um elemento

Parece que o JPA deve ser capaz de manipular várias linhas em Repositórios. Procurei outras anotações que talvez estejam faltando e estou tendo dificuldade em obter resultados.

Alguma sugestão sobre o que devo fazer para resolver isso?

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

}
    
por Webnet 04.09.2012 в 22:36
fonte

2 respostas

6

Parece que o problema foi que Map<ContentType, Integer> não tem a promessa de um índice exclusivo, portanto, o JPA não gosta de mapear para ele. Usando List<Map<ContentType, Integer>> , funciona muito bem!

    
por Webnet 05.09.2012 / 17:16
fonte
0

Tente isso, funciona

mantenha seu modelo na lista

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

}
  

então no seu repositório

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

    driverRepository.delete(delete_driver);
}
    
por Mohammad 25.09.2017 / 13:46
fonte