JPA, l'Entité gestionnaire, sélectionnez le nombre de colonnes et d'obtenir la liste des résultats d'objets personnalisés
Comment je peut obtenir la liste des objets personnalisés, comme les résultats de la requête ci-dessous:
SELECT p.category.id, count(p.id) FROM Product p left join p.category c WHERE p.seller.id=:id GROUP BY c.id
Par exemple:
return getEntityManager().createQuery("SELECT p.category.id, count(p.id) FROM Product p left join p.category c WHERE p.seller.id=:id GROUP BY c.id").setParameter("id", id).getResultList();
J'ai besoin d'une carte avec l'id de la catégorie et le nombre de produits dans la catégorie.
je recommande découvrez cette réponse. cette réponse a deux exemples 1. à l'aide de n-uplets 2. à l'aide d'une de la classe et les génériques
OriginalL'auteur Piotr Kozlowski | 2013-06-19
Vous devez vous connecter pour publier un commentaire.
Malheureusement, JPA ne fournit pas une méthode standard pour récupérer les résultats dans un
Map
. Cependant, la construction de votre carte manuellement en se promenant dans la liste de résultats est assez simple:OriginalL'auteur DannyMo
En supposant que vous êtes en utilisant hibernate(tagged), vous pouvez essayer le ci-dessous requête HQL, je n'ai pas testé.
SELECT new map(p.category.id as category_id, count(p.id) as id_count) FROM Product p left join p.category c WHERE p.seller.id=:id GROUP BY c.id
OriginalL'auteur Nayan Wadekar
En utilisant JPA 2.0 et EclipseLink impl
Pour la première question: la liste des objets personnalisés(pas d'objets de la table):
réponse: créer un modèle personnalisé et utiliser le @Entité et @Id
créer la requête et de l'exécuter
Pour la deuxième: comment lire la réponse sur une carte
réponse: Utiliser le QueryHints et ResultTypes (c'est une variante de la @DannyMo réponse)
J'espère que cette aide
OriginalL'auteur lalokana