Hi Diego, thanks for your patience, >From what I understand from the documentation, each of the strategies involve superclass persistence of some sort, even the union subclass which forces you to have a shared sequential key (actually stored in the concrete class but unique across all). I think the implicit is the only one that would allow us to store the concrete classes completely separate from each other (as we are using a legacy database) .
Either way I am having all sorts of issues persisting what we have implemented, so rather than wasting you good people's time, i'll battle on. Thanks again. On Mon, May 10, 2010 at 3:37 AM, Diego Mijelshon <[email protected]>wrote: > I can't understand the last sentence, did you forget to type/paste > something? > > Anyway, this looks exactly like the case for table-per-class (i.e. > <joined-subclass>). > I suggest that you read > http://nhforge.org/doc/nh/en/index.html#inheritance, in particular > http://nhforge.org/doc/nh/en/index.html#inheritance-limitations. > Implicit polymorphism is the most limited strategy, and it usually makes > sense only if you are never going to query the whole hierarchy, only one > concrete class at once. > > Diego > > > On Sun, May 9, 2010 at 14:59, Jon Moore <[email protected]> wrote: > >> hi Diego, >> I don't think I can, we want the concrete classes (plug-in module >> projects) to be persisted in separate tables (witout a common primary >> key, and as far as i can tell from the documentation this is the only way >> to do it), so I guess the only way to do this is to store the entity type in >> a field in the concrete class table like a pseudo-discriminator - that way i >> can group by it...but seems a little dirty :( >> >> >> and as the concrete classes are defined in , a, to have a subclass or >> union subclass the mapping >> >> On Fri, May 7, 2010 at 1:21 PM, Diego Mijelshon >> <[email protected]>wrote: >> >>> I believe the .class pseudo-property is not available when using implicit >>> polymorphism. >>> Anyway, NHibernate is going to do multiple queries in that case, not >>> unions, so you might as well do it explicitly (one criteria query per >>> subclass). >>> >>> Have you considered switching to a different inheritance strategy? >>> >>> Diego >>> >>> >>> On Fri, May 7, 2010 at 08:27, Jon Moore <[email protected]> wrote: >>> >>>> Thanks guys, Diego was quite right - it was totally my issue with having >>>> incorrect data, I misunderstood the documentation and assumed it was a >>>> limitation but it was due to my duff data...my fault! >>>> >>>> Is there an identifier I can use to identify the type of concrete class >>>> in an Icritera query, i.e. so I can group by the type and >>>> count? something like this: >>>> >>>> var criteria = session.CreateCriteria(typeof (CoreItem)); >>>> criteria.SetProjection(Projections.ProjectionList() >>>> >>>> .Add(Projections.Property("<<<TYPE>>>"), "Identifier") >>>> .Add(Projections.Count("Id"), >>>> "Result") >>>> >>>> .Add(Projections.GroupProperty("<<<TYPE>>"))); >>>> >>>> >>>> >>>> >>>> On Thu, May 6, 2010 at 9:01 PM, Diego Mijelshon <[email protected] >>>> > wrote: >>>> >>>>> I don't see why you can't use a different inheritance strategy. >>>>> NHibernate doesn't care in which assembly your classes are (of course, >>>>> you'll need to use full type names). >>>>> >>>>> Anyway, your query should work. Are you sure you have persistent >>>>> instances (rows) of both classes? >>>>> >>>>> Diego >>>>> >>>>> >>>>> >>>>> On Thu, May 6, 2010 at 09:40, kmoo01 <[email protected]> wrote: >>>>> >>>>>> Hi guys, >>>>>> From the documentation I can see that implicit polymorphism, in my >>>>>> case, will not generate SQL UNIONs when performing polymorphic >>>>>> queries. but is there any way of looping through the concrete classes >>>>>> and union the results manually? >>>>>> >>>>>> My scenario: >>>>>> >>>>>> Im using a "Table per concrete class" approach, and I don't hold >>>>>> instances of the superclass >>>>>> >>>>>> Abstract class "CoreItem" (no mapping file needed) >>>>>> Concrete class "ResearchItem" inheriting from "CoreItem" with mapping >>>>>> file including all core item properties >>>>>> Concrete class "TestItem" inheriting from "CoreItem" with mapping file >>>>>> including all core item properties >>>>>> >>>>>> When I query the CoreItem like below I can see 2 queries run correctly >>>>>> from sqlprofiler, but only the second is returned... >>>>>> >>>>>> ICriteria crit = session.CreateCriteria(typeof(CoreItem)); >>>>>> ..some expressions... >>>>>> crit.List<CoreItem>(); >>>>>> >>>>>> >>>>>> Unfortunately I need to have the inheritance this way because the 2 >>>>>> concrete items actually live in separate assemblies, meaning the >>>>>> abstract class doesn't have any knowledge of them (so cant do a >>>>>> subclass mapping - as far as im aware...) >>>>>> >>>>>> Cheers guys, >>>>>> kmoo01 >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "nhusers" group. >>>>>> To post to this group, send email to [email protected]. >>>>>> To unsubscribe from this group, send email to >>>>>> [email protected]<nhusers%[email protected]> >>>>>> . >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/nhusers?hl=en. >>>>>> >>>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "nhusers" group. >>>>> To post to this group, send email to [email protected]. >>>>> To unsubscribe from this group, send email to >>>>> [email protected]<nhusers%[email protected]> >>>>> . >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/nhusers?hl=en. >>>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "nhusers" group. >>>> To post to this group, send email to [email protected]. >>>> To unsubscribe from this group, send email to >>>> [email protected]<nhusers%[email protected]> >>>> . >>>> For more options, visit this group at >>>> http://groups.google.com/group/nhusers?hl=en. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "nhusers" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]<nhusers%[email protected]> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/nhusers?hl=en. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<nhusers%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<nhusers%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.
