2010-06-08 4 views
0

J'ai la méthode suivante. Cela fonctionne bien si je supprime la ligne suivantenhibernate: comment interroger la collection à l'intérieur de l'entité parente

.Add(Restrictions.Eq("Product.IsPopItem", true)) 

Le message d'erreur est

ne pouvait pas résoudre la propriété: Product.IsPopItem de: EStore.Domain.Model.ProductCategory

Je suis confiant que le "Product.IsPopItem" est mappé correctement que je peux appeler cette propriété. Ai-je besoin d'ajouter quelques critères.

public ICollection<ProductCategory> FindByCompanyIdAndCategoryIdAndIsPop(int companyId, int id) 
    { 
     var products = _session 
      .CreateCriteria(typeof(ProductCategory)) 
      .Add(Restrictions.Eq("CompanyId", companyId)) 
      .Add(Restrictions.Eq("CategoryId", id)) 
      .Add(Restrictions.Eq("Product.IsPopItem", true)) 
      .List<ProductCategory>(); 
     return products; 
    } 

Répondre

4

Oui, vous devez ajouter un .CreateAleas

.CreateAlias("Product", "product", JoinType.InnerJoin) 

s'il vous plaît changer JoinType à vos besoins, et utiliser « produit » alias au lieu du nom de la propriété « produit »

si finale devrait être quelque chose comme:

.CreateCriteria(typeof(ProductCategory)) 
     .CreateAlias("Product", "product", JoinType.InnerJoin) 
     .Add(Restrictions.Eq("CompanyId", companyId)) 
     .Add(Restrictions.Eq("CategoryId", id)) 
     .Add(Restrictions.Eq("product.IsPopItem", true)) 
     .List<ProductCategory>()); 
     return products; 
+0

battu moi juste comme j'ai commencé à taper :) – pythonandchips

+0

:) désolé, juste aidé un collègue avec le même problème – isuruceanu

+0

super, très cool. – frosty

Questions connexes