0
votes

Pagination de données de printemps

Faites face à un comportement étrange de données de printemps JPA 2.2.0.

Le produit et la catégorie sont deux entités très simples avec des relations un à plusieurs. Notez que dans mon cas, certains produits ne pouvaient avoir aucune catégorie. P>

Je fais cette requête p>

@Query("select p, c" +
        "from Product p " +
        "left join fetch Category c on p.category.id = c.id " +
        "where (:categoryId = -1L or c.id = :categoryId) and " +
        "(:priceFrom is null or p.price >= :priceFrom) and " +
        "(:priceTo is null or p.price <= :priceTo)")
Page<Product> filterProducts(@Param("categoryId") Long categoryId,
                             @Param("priceFrom") BigDecimal priceFrom,
                             @Param("priceTo") BigDecimal priceTo,
                             Pageable pageable);


4 commentaires

Pouvez-vous vérifier si cela se produit également si vous utilisez une méthode de repo de données de printemps existante, par exemple. page résultats (); ?


peut-être aussi poster vos classes d'entité associées ... pourrait aider


Peut-être un duplicata ... plz a un look: Stackoverflow.com/questions/6877857/...


Autant que je sache à utiliser une charge paresseuse d'un champ, il doit avoir facultatif = paramètre faux . Mais catégorie est facultatif. Vous pouvez essayer d'ajouter VideCategory à la place de NULL. Et puis essayez d'utiliser joindre récupération au lieu de de rejoindre la jointure "/ code>


3 Réponses :


0
votes

Votre interface de référentiel étend-elle JParepository ou PagingandsortingRepository , par ex. Comme ceci (où long est le type d'entités @ID champ: xxx


0 commentaires

0
votes

Essayez ceci xxx


1 commentaires

Cette requête récupère chaque catégorie par sélection séparé. Je cherche une façon de forcer l'hibernation à faire cela par une requête avec une jointure.



0
votes

Afin de calculer les informations de la page appropriées, Spring JPA nécessite également le nombre de lignes Maxinum. (Pour calculer les numéros de page). Afin d'obtenir ceci, vous devez fournir un comtequery en plus de la définition de requête d'origine: xxx

) Filtre de pageProduits (@param ("CatégorieId") Long CatégorieId, @Param ("Prix") Prix BigDecimalFrom, @Param ("Priceto") Priceto BigDecimal, Pagable pitable);


0 commentaires