2009-08-25 18 views
0

Ich habe ein sehr einfaches Szenario, mit NHibernate:Problem auf einer Abfrage mit NHibernate

  • einer abstrakten Basisklasse „Tier“;
  • zwei konkrete Unterklasse "Katze" und "Hund" mit Diskriminator Spalte (1 für Hund und 2 für Katze);
  • eine normale Klasse Person;

Person haben ein viel-zu-eins von Tier.

Ich möchte eine Liste der Person mit einem Hund abrufen. Wie kann ich das tun? thx viel

Antwort

0

Wenn ich gut verstehen, so etwas wie dieses:

var list = session.CreateCriteria(typeof(Person)) 
    .CreateCriteria("Animal") 
     .Add(Expression.Eq("discriminatorField", 1)) 
    .List<Person>(); 

oben ist "Criteria API" aber Sie können "HQL" es ist mehr so ​​etwas wie folgt verwenden:

StringBuilder query = new StringBuilder(); 
query.Append("from Person pers where "); 
query.Append("from Animal ani ... and :wichAnimal"); 
query.Append("and cus.IsActive = :wichAnimal"); 

IList<Person> list = session 
    .CreateQuery(query.ToString()) 
    .SetInt16("wichAnimal",1) 
    .List<Person>(); 

HTH