Hi,
we have a table named Customer which has three sub classes / tables viz.
Cust1, Cust2 and Cust3 which are linked by hbm using joined-sub-class.
all the 4 tables have CustomerId as the primary Key. A record in customer
table will have one record either in Cust1 or Cust 2 or Cust3 table.
fetching the list using the standard Nhibernate List() fetches the classes
and its subclasses correctly.
However, in order to optimimize our query, w e had to use CreateSQlQuery
method.
On goolging, we found that the correct way to fetch class and its sub
classes is to
have a select query such as
var sqlQuery = Session.CreateSqlQuery(
select C.*,
case if C1.CustId is not null then 1
else if C2.CustId is not null then 2
....
from Customer C
left join Cust1 C1 on C1.CustId = C1.CustId
left join Cust2 C2 on C2.CustId
where C.CustID in (x,y,z,blah,blah).).
sqlQuery.AdddEntity("C",typeof(Customer));
sqlQuery.List();
the case and alais change is needed to differentiate the CUstId columns
between the 4 tables when the Nhibernate genereates a query internally, else
an error with *clazz* would be thrown..
On running the query, we get, the Nhibernate Exception as
"*IndexOutOfRangeException - Duration*"
Cust1 (child class) table has a column named Duration.
I renamed the table column to Duration_BE to check if the column name is an
Issue, ,
then it threw the error
"*IndexOutOfRangeException - Duration-BE*"
The reference for this mode of work is..
http://www.methodicmadness.com/2009/01/nhibernate-what-is-heck-clazz.html
Can any one help me.
--
Regards,
Murali
--
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.