JPA-Entity-manager, wählen Sie viele Spalten und bekommen Ergebnis-Liste von benutzerdefinierten Objekten
Wie kann ich die Liste der benutzerdefinierten Objekte, wie die Ergebnisse der folgenden Abfrage:
SELECT p.category.id, count(p.id) FROM Product p left join p.category c WHERE p.seller.id=:id GROUP BY c.id
Durch Beispiel:
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();
Ich brauche eine Karte mit der Kategorie-id und die Anzahl der Produkte in der Kategorie.
InformationsquelleAutor der Frage Piotr Kozlowski | 2013-06-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider, JPA nicht bieten eine standard-Methode zum abrufen der Ergebnisse in einem
Map
. Aber, Baue deine Karte manuell, indem Sie zu Fuß durch die Ergebnis-Liste ist einfach genug:InformationsquelleAutor der Antwort DannyMo
Vorausgesetzt, Sie sind mit hibernate(tagged) ist, kann versuchen die unten HQL-Abfrage habe ich noch nicht getestet.
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
InformationsquelleAutor der Antwort Nayan Wadekar
Verwendung von JPA 2.0 und EclipseLink impl
Für die erste Frage: Liste der benutzerdefinierten Objekte(keine Tabelle Objekte):
Antwort: erstellen Sie ein benutzerdefiniertes Modell und verwenden Sie die @Entity und @Id
die Abfrage erstellen und ausführen
Zum zweiten: wie zu Lesen, die Antwort auf eine Karte
Antwort: Verwenden Sie die QueryHints und ResultTypes (dies ist eine Variante für die @DannyMo Antwort)
Ich hoffe, das hilft
InformationsquelleAutor der Antwort lalokana