Jointure de Deux tables dans la Requête de Critères
J'ai trois tables est ItemCategory,ItemMaster et le Prix. Je me réfère itemaCategoryId dans ItemMaster table et comme ça se référant itemmasterid dans le prix. Maintenant, je dois contenu de l'affichage de prix de l'ordre par itemcategory id. C'est mes critères de requête.
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);
Au-dessus de mes critères de Requête
- Pourquoi avez-vous itemMasterId et itemMaster propriétés dans le Prix? Veulent-ils dire la même chose?
- Pas de. Tableau de prix se référant itemmasterid seulement. j'ai pour afficher le contenu du tableau de prix et commande par itemcategoryid, c'est que j'ai besoin. Mais ne sais pas bien faire rejoindre dans les critères.
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez plusieurs
de
déclarations, vous obtenez le produit cartésien de toutes les entités. Si vous souhaitez conserver les relations, l'utilisation rejoindre la place:Cependant, il ressemble au moins la deuxième jointure peut être inutile, parce que vous êtes en mesure d'accéder à la
category
propriété directement à l'aide de la lecture, n'est-ce pas?: