the mix between "Table per class hierarchy" and "Table per class" works in
that way.
In practice:
You are querying an hierarchy. NH must query the main table to know the type
related each record and when the type is B NH should initialize all
properties; at this point it needs all fields in the joined table.
The select may end in a N+1 issue.

We can study some alternative solution but the impl will be not
so immediate.

On Mon, Jun 7, 2010 at 6:12 AM, Stefan Steinegger <
[email protected]> wrote:

> I have a performance problem with a subquery using the criteria API.
> The subquery is based on a base class, which is mapped all into the
> same table, but uses <join>'s to separate data.
>
> The problem is, the subquery always joins all the tables from all the
> subclasses, even if they are not used and do not influence the result
> (left outer join).
>
>  <class name="A">
>    <subclass name="B">
>      <join table="B">
>      </join>
>    </subclass>
>  </class>
>
> Generated SQL:
>
>  select .... from X
>  where A_FK in
>  (select id from A
>    left outer join B on ...)
>
> What I could do is make the join fetching by select:
>
>  <join fetch="select">
>
> But this would influence fetching in general, which is not what I
> want.
>
> Is there any way to optimize just this subquery? Could this be
> considered a bug, or should I report this as a feature request (to
> remove the joins in a subquery)?
>
> PS: AFAIK, there isn't any (recommended) use for this joined tables in
> the subquery. You can't really address these tables. Theoretically you
> can use one of the properties of the inherited classes, but this is
> not very recommendable because criteria "guesses" the type to be
> filtered and just takes the first subtype declaring a property with
> that name. When there are other subtypes with such a property, the
> result will be unpredictable.
>
> --
> 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.
>
>


-- 
Fabio Maulo

-- 
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