J'essaie de filtrer la collection enfant d'une racine agrégée lors du chargement avec Nhibernate. Charger un client avec toutes les commandes qui ont été expédiées. Est-ce possible?Filtrer la collection enfant retournée avec la racine agrégée en utilisant Nhibernate
Répondre
Eh bien, vous pouvez exposer des propriétés qui sont filtrés sur la carte, comme ceci:
<bag name="shippedOrders" ... where="Status == 'Shipped'" >
<key column="CustomerId" />
<one-to-many class="Order" />
</bag>
L'attribut « où » est arbitraire SQL.
Théoriquement, vous pouvez avoir deux propriétés Customer, Orders et ShippedOrders. Cependant, je dois dire que je n'ai pas fait cela, et je voudrais tester comment NH gère la cascade dans ce cas. Dans tous les cas, vous devrez faire attention lorsque de nouveaux éléments sont ajoutés/supprimés qu'ils sont ajoutés/supprimés correctement dans les deux collections. Le fait que vous vouliez faire cela fait que nous nous demandons si Order est une racine agrégée. Il est peut-être moins de problèmes à long terme le faire comme ceci:
orderRepository.GetOrders(int customerId, OrderStatus[] statuses)
Vous pouvez regarder l'autre manière - charger toutes les commandes expédiées pour un client.
session.CreateCriteria(typeOf(Order))
.Add(Restrictions.Eq("Shipped", shippedStatus))
.Add(Restrictions.Eq("Customer", requiredCustomer))
.List<Order>();
Vous pouvez aussi le faire en utilisant HQL en utilisant session.Filter (customer.Orders, "où this.Status ==" Expédiée");
ICriteria crit = session.CreateCriteria (typeof(Customer));
crit.CreateAlias ("Orders", "o");
crit.Add (Expression.Eq ("o.Status", shippedStatus));
crit.Add (Expression.Eq ("Id", customerId));
return crit.UniqueResult <Customer>();
quelque chose comme ça.
- 1. Contourner la racine agrégée
- 2. Filtrer la collection enfant en utilisant une collection enfant de l'enfant
- 3. Désireux de charger la collection enfant avec NHibernate
- 4. Filtrer la grande collection
- 5. Comment filtrer la collection en JPA/JPQL?
- 6. classe de retour de la collection nichée en utilisant NHibernate
- 7. Récupération d'un objet et d'une collection enfant dans NHibernate en utilisant Linq
- 8. Requête retournant l'entité et la collection enfant .. la collection enfant triée?
- 9. NHibernate et l'ajout de nouveaux éléments avec une collection composite à une collection enfant
- 10. NHibernate - comment mapper la collection d'arbres
- 11. Comment trier une collection parent et enfant en utilisant Linq?
- 12. Conception pilotée par domaine: racine agrégée et racines agrégées secondaires
- 13. Supprimer un enregistrement enfant de la collection parent
- 14. en utilisant d'abord() avec une collection générique par la réflexion
- 15. Quelle est l'URL préférée pour ajouter une entité qui n'est pas une racine agrégée?
- 16. Insérer dans la table enfant avec NHibernate 2.0.1
- 17. Interrogation sur la collection avec des critères Nhibernate Api?
- 18. Interrogation sur la collection de chaînes avec NHibernate
- 19. NHibernate - besoin d'aide avec la requête ICriteria
- 20. NHibernate et collection compte
- 21. NHibernate - objet enfant est null
- 22. NHIBERNATE: Comment mapper une collection dans la base de données en utilisant Mapping.Attributes
- 23. Tri de la collection liée dans la requête Nhibernate
- 24. Commander par collection compter avec ICriteria & NHibernate
- 25. une collection de énumérations avec NHibernate
- 26. Remplissage de la propriété de collection enfant avec la sous-requête LINQ
- 27. Requête NHibernate pour un objet avec une propriété de collection enfant
- 28. recomposer la collection avec linq
- 29. Comment filtrer un à plusieurs relations avec fluent-NHibernate?
- 30. NHibernate - forage vers le bas de la racine agrégat
Cela impliquerait de charger les commandes deux fois, bien qu'il n'y ait pour elles que des entités distinctes –