This question is a copy from:

http://stackoverflow.com/questions/6925587/hql-join-problem

I would appreciate an answer please. Thanks!

This is the question:

I have no problem writing sql for the following problem. However, I
would like to write it as HQL or ICriteria. I am using fluent
nhibernate and the latest nhibernate. The situation:

There are 6 classes A B C D AC AD. B inherits from A. AC represents a
m:m relationship between A and C and AD represents a m:m relationship
between A and D. Let us assume that all classes have an ID column. I
would like to count the number of Cs and Ds B is associated with.

There is no IList of, for example, Cs in A (and B for that matter).
Still the classes are associated ...

Here is some code (simplified):

public class A : Entity
{

}

public class B : A
{

}

public class C : Entity
{

}

public class D : Entity
{

}

public class AC : Entity
{
    public virtual A A { get; set; }
    public virtual C C { get; set; }
}

public class AD : Entity
{
    public virtual A A { get; set; }
    public virtual D D { get; set; }
}

Is this possible to use HQL and ‘left join’ (to also show the Bs that
have zero Cs and Ds) in my particular case?

Thanks.

Christian

PS:

I have played a bit with theta style joins but did not get the
expected results and I don’t think ‘left joins’ are possible here
aren’t they?

PPS:

This theta-style join kind of works but only if B is assciated with at
least 1 C and D:

select
    B.Id,
    count(distinct AC.C.Id),
    count(distinct AD.D.Id)
from AC AC, AD AD, B B
where AC.A.Id = B.Id and AD.A.Id = B.Id
group by B.Id

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