Die Sortierung einer benutzerdefinierten JPA-query mit auslagerungsfähigen

So, ich habe dies bereits getan mit dem standard-Spring-Data-JPA-Schnittstelle, die erweitert PagingAndSortingRepository, um zu erreichen, pagination und Sortierung für eine REST-API. Die Sache ist die, ich will jetzt erreichen das gleiche, aber jetzt mit nur Vanille JPA und so weit so gut ich es geschafft, meine API zu paginieren, aber die Sortierung funktioniert überhaupt nicht. Jedes mal, wenn ich versuche den parameter (von a pageable-Objekt mit pageable.getSort()) es endet mit einem Abfrage-Fehler (entweder, wenn ich senden Sie einfach eine Zeichenfolge als parameter, wie "name" oder senden Sie einfach die sort-Objekt, es zeigt Fehler).

Hier einige code:

Mein repo Umsetzung:

    @Override
public List<Project> findByAll(Pageable pageable) {
    Query query = em.createQuery("SELECT project FROM Project project ORDER BY :sort");
    query.setParameter("sort", pageable.getSort());
    query.setMaxResults(pageable.getPageSize());
    query.setFirstResult(pageable.getPageSize() * pageable.getPageNumber());
    return query.getResultList();
}

Mein service:

@Override
public Page<Project> findAll(Pageable pageable) {
    objects = Lists.newArrayList(repository.findByAll(pageable));
    PageImpl<Project> pages= new PageImpl<Project>(objects, pageable, repository.count());
    return pages;
}

Klar zu sein, ich bin Befüllen die Pageable-Objekt über URI und aus der Konsole kann ich sagen, es ist eigentlich immer die Daten, also gehe ich davon aus, dass das problem mit der repo.

Edit: Das ist die Fehlermeldung die ich bekomme, wenn ich ersetzen Sie die setParameter("Sortieren", ...) für einen hartcodierten Zeichenfolge aka Abfrage.setParameter("sort", "name"):

java.lang.NumberFormatException: For input string: "name"

Und ich denke, diese Methode sollte stehen für Zeichenfolgen als gut. Wenn ich Abfrage.setParameter("sort", auslagerungsfähigen.getSort()), der Fehler ist der gleiche.

  • Könnten Sie bitte fügen Sie dem query-Fehler, den Sie haben? Und auch die query-string aufgebaut wäre hilfreich.
InformationsquelleAutor Manuel Páez | 2017-01-03
Schreibe einen Kommentar