Join Zwei Tabellen in der Abfrage-Kriterien
Ich habe drei Tabellen, eine ist ItemCategory,ItemMaster und Preis. Ich beziehe mich itemaCategoryId in ItemMaster Tisch und wie, dass bezogen itemmasterid im Preis. Nun habe ich mir die display-Inhalte von Preis order by itemcategory id. Dies ist meine Kriterien Abfrage.
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Price> cq = cb.createQuery(Price.class);
Root<Price> root = cq.from(Price.class);
Root<ItemMaster> itemMasterRoot = cq.from(ItemMaster.class);
Root<ItemCategory> itemCategoryRoot = cq.from(ItemCategory.class);
Join<ItemMaster, ItemCategory> s=itemMasterRoot.join(ItemMaster_.category);
Join<Price,ItemMaster> y=root.join(Price_.itemMaster);
Path<Long> itemMasterId=root.get(Price_.itemMasterId);
cq.select(root).where(cb.equal(root.get(Price_.priceMasterId), priceMasterId))
.orderBy(cb.asc(itemMasterId));
TypedQuery<Price> q = entityManager.createQuery(cq);
Oben meine Kriterien Abfrage
Warum haben Sie itemMasterId und itemMaster Eigenschaften im Preis? Bedeuten Sie das gleiche?
Nein. Preis-Tabelle bezieht itemmasterid nur. ich habe für die Anzeige des Inhalts der Preisliste und Bestellung von itemcategoryid, das ist, die ich brauche. Aber weiß nicht richtig wie Mitmach-Kriterien.
Nein. Preis-Tabelle bezieht itemmasterid nur. ich habe für die Anzeige des Inhalts der Preisliste und Bestellung von itemcategoryid, das ist, die ich brauche. Aber weiß nicht richtig wie Mitmach-Kriterien.
InformationsquelleAutor Uday | 2013-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mehrere
Aussagen, Sie bekommen das kartesische Produkt aller Einheiten. Wenn Sie möchten, um die Erhaltung der Beziehungen, join statt:
Aber es sieht aus wie mindestens der zweite join kann nutzlos sein, denn Sie sind in der Lage, den Zugriff auf die
category
Hotel direkt über die get-Methode, nicht wahr?:cq.multiselect(itemCategory).where(cb.gleich(Wurzel.bekommen(Price_.priceMasterId), priceMasterId)) .orderBy(cb.asc(itemCategory.bekommen(ItemCategory_.id)));
Warum multiselect? Wählen Sie verwenden.
gibt Fehler, bevor Sie das Projekt ausführen, Wenn ich wählen Sie.
endlich habe ich etwas @perissf. Vielen Dank für die Antwort, Mann.
InformationsquelleAutor perissf