Requête personnalisée au Printemps JPA Référentiel avec la Pagination

J'ai essayé la mise en œuvre de JPA Référentiel avec le Printemps de Démarrage il fonctionne très bien.
Maintenant, si j'essaie de mettre en œuvre de requête personnalisés dans l'interface qui s'étend JpaRepository à l'aide de @Requête Annotation, il fonctionne très bien retourne la Liste de haricots.(à l'aide de NamedQuery).
Maintenant, quand j'essaie d'utiliser la pagination pour la méthode personnalisée/requête qui ne fonctionne pas.

Code :

Contrôleur :

@RequestMapping("/custompages/{pageNumber}")
public String getAllEmployeesUsingNamedQueryWithPaging(@PathVariable Integer pageNumber,Model model)
{
    Page<Employee> page = employeeService.getAllEmployeesUsingNamedQueryWithPaging(pageNumber);

    System.out.println("current page "+page);
    System.out.println("current page content"+page.getContent());

     int current = page.getNumber() + 1;
    int begin = Math.max(1, current - 5);
    int end = Math.min(begin + 10, page.getTotalPages());

    model.addAttribute("empList", page.getContent());
    model.addAttribute("empPages", page);
    model.addAttribute("beginIndex", begin);
    model.addAttribute("endIndex", end);
    model.addAttribute("currentIndex", current);

    return "employeeWorkbench";
}

Service

@Override
public Page<Employee> getAllEmployeesUsingNamedQueryWithPaging(Integer  
pageNumber) {

    PageRequest pageRequest =
            new PageRequest(pageNumber - 1, PAGE_SIZE, 
    Sort.Direction.ASC, "id");
    return   
employeeDao.getAllEmployeesUsingNamedQueryWithPaging(pageRequest);
}

Dao

@Transactional
public interface EmployeeDao  extends JpaRepository<Employee, Long>{

@Query(name="HQL_GET_ALL_EMPLOYEE_BY_ID")//Works Fine
public List<Employee> getEmpByIdUsingNamedQuery(@Param("empId") Long
empId);     

@Query(name="HQL_GET_ALL_EMPLOYEE") //throws exception
public Page<Employee> getAllEmployeesUsingNamedQueryWithPaging(Pageable     
pageable);  
}

NamedQuery

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 
3.0//EN"  
"http://hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

<query name="HQL_GET_ALL_EMPLOYEE">from Employee</query>

<query name="HQL_GET_ALL_EMPLOYEE_BY_ID">from Employee where id = 
:empId</query>

</hibernate-mapping>

Exception : java.lang.IllegalArgumentException: Type spécifié pour
TypedQuery [java.lang.Longue] est incompatible avec le type de retour de la requête
[la classe com.mobicule.SpringBootJPADemo.les haricots.L'employé]

Je veux juste avoir de la pagination de la fonctionnalité fournie par Spring JPA Référentiel de méthodes personnalisées et de requête.
Comment puis-je y parvenir?

si au lieu d'utiliser une requête nommée dans le xml, vous mettez la requête directement dans la @Query("from Employee") faut-il changer le comportement? aussi l' @Transactional sur le référentiel est redondante. Également pour les requêtes c'est simple, vous seriez mieux d'utiliser simplement le findAll le référentiel a déjà.
aussi l'erreur est ce qui implique que pour une raison quelconque (pas évident pour moi), il pense que la requête spécifiée doit retourner une Longue et non des Employés
Merci pour la réponse. J'ai essayé avec simplement @Query("Employee"), mais cela m'a fait une Liste<Employé> et PAS<Employé>. Ma motivation est d'utiliser JpaRepositories construire dans la Fonctionnalité de Pagination Pour mes requêtes personnalisées. Et comme vous l'avez dit, j'ai utilisé findAll cela fonctionne bien avec pas de questions, même fonctionne bien avec la pagination.mais je veux avoir les mêmes fonctionnalités pour mes requêtes personnalisées.
J'ai cherché pour cette question, j'ai connu que lorsque JpaRepository exécute sa méthode findAll,findBy......etc avec la pagination, il passe à 2 requêtes ---pour le comte et les autres pour les données réelles.
oui ce comte est intentionnel... donc il sait combien de pages il est. Si vous avez le type de retour spécifié comme Page<Employee> vous ne devriez pas obtenir une Liste, vous ne devriez obtenir une Liste si vous demandez une Liste ou d'une sous-interface de Liste (comme objet iterable)

OriginalL'auteur ashish | 2015-08-06