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].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to