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);
3 Réponses :
Votre interface de référentiel étend-elle JParepository code> ou
PagingandsortingRepository code>, par ex. Comme ceci (où
long code> est le type d'entités
@ID code> champ:
Essayez ceci
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.
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 )
Filtre de pageProduits (@param ("CatégorieId") Long CatégorieId,
@Param ("Prix") Prix BigDecimalFrom,
@Param ("Priceto") Priceto BigDecimal,
Pagable pitable); p> p> comtequery code> en plus de la définition de requête d'origine:
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 (); code>?
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 code>. Mais
catégorie code> est facultatif. Vous pouvez essayer d'ajouter
VideCategory code> à la place de NULL. Et puis essayez d'utiliser
joindre récupération code> au lieu de
de rejoindre la jointure "/ code>