Thank you for the response Gunnar. Indeed I haven't thought of this scenario. I'll go with some workaround, probably querying the type client-side (after force-evaluation of pre-filters), furtunately the collection is never longer than ~30 entities.
On Monday, December 23, 2013 10:24:47 PM UTC+1, Gunnar Liljas wrote: > > There is no hierarchical relation through PersonPlan. The OperatorPlans > collection could very well be a completely different relation, and > NHibernate certainly hopes that it is. Consider what would/should happenf > you remove an OperatorPlan from either of the collections. For things to be > OK, the other collection would have to be notified. A bit too advanced for > comfort. > > Do you really need both? > > > 2013/12/21 Michał Gajek <[email protected] <javascript:>> > >> Hi, I'm having a "Day" domain model which has some related >> "PersonalPlans". There are also classes which inherit from PersonalPlan >> (like OperatorPlan). I'd like to be able to retrieve the collection of, >> lets say, OperatorPlans. How do I map it properly? >> >> (i'm skipping primary keys and other fields unimportant in this question.) >> >> domain classes: >> >> public class Day { >> public virtual IList<PersonPlan> PeoplePlans { get; set; }}public class >> PersonPlan{ >> public virtual Day Day { get; set; }}public class OperatorPlan: >> PersonPlan {} >> >> mappings: >> >> public class OperatorPlanMap: SubclassMap<OperatorPlan> { >> public OperatorPlanMap() { >> // some stuff >> }} >> public class PersonPlanMap: ClassMap<PersonPlan> { >> public PersonPlanMap() { >> Id(x => x.Id); >> References(x => x.Day).Not.Nullable(); >> }} >> public class DayMap: ClassMap<Day> { >> public DayMap() { >> // ... >> HasMany(x => x.PeoplePlans); >> }} >> >> now whenever I create a new PersonPlan or one of it's subtypes (like >> OperatorPlan), it is available through Day.PeoplePlans. >> >> Now I'd like to be able to map a collection of *specific type only*, >> like so: >> >> public class Day { >> public virtual IList<PersonPlan> PeoplePlans { get; set; } >> public virtual IList<OperatorPlan> OperatorPlans { get; set; }} >> >> *How do I map* OperatorPlans *correctly?* >> >> Putting simply HasMany(x => x.OperatorPlans) causes the database table >> to be extended with one new column, Day_Id. It seems that the >> "hierarchical" relation (through PersonPlan) is being ignored in that case. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected]<javascript:> >> . >> Visit this group at http://groups.google.com/group/nhusers. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/groups/opt_out.
