meant to write query.AddJoin("b", "query.Behaviors") Still broke
On Jan 22, 7:46 pm, Craig Neuwirt <[email protected]> wrote:
> Hello,
>
> I have a small hierarchical model as follows
>
> class Behavior {}
> class Scenario : Behavior
> {
> IList<Behavior> Behaviors {get; set; } => Many-To-Many
>
> }
>
> Some attributes left out for brevity.
> <hibernate-mapping auto-import="true" default-lazy="false"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
> xmlns="urn:nhibernate-mapping-2.2">
> <class name="OneTechnologies.CreditFulfillment.DomainModel.Behavior,
> OneTechnologies.CreditFulfillment.DomainModel" table="Behaviors"
> discriminator-value="B">
> <cache usage="read-write" />
> <id name="Id" access="property" column="Id" type="Int32"
> unsaved-value="0">
> <generator class="native">
> </generator>
> </id>
> <discriminator column="BehaviorType" type="String" />
> <property name="Name" access="property" type="String">
> <column name="Name"/>
> </property>
> <property name="Description" access="property" type="String">
> <column name="Description"/>
> </property>
> <property name="IsDefault" access="property" type="Boolean">
> <column name="IsDefault"/>
> </property>
> <subclass name="OneTechnologies.CreditFulfillment.DomainModel.Scenario,
> OneTechnologies.CreditFulfillment.DomainModel" discriminator-value="S">
> <property name="StartDate" access="property" type="System.DateTime,
> mscorlib, Version=2.0.0.0, Culture=neutral,
> PublicKeyToken=b77a5c561934e089">
> <column name="StartDate"/>
> </property>
> <property name="EndDate" access="property" type="System.DateTime,
> mscorlib, Version=2.0.0.0, Culture=neutral,
> PublicKeyToken=b77a5c561934e089">
> <column name="EndDate"/>
> </property>
> <bag name="Behaviors" access="nosetter.camelcase-underscore"
> table="Behavior_Scenario" lazy="true">
> <key column="ScenarioId" />
> <many-to-many
> class="OneTechnologies.CreditFulfillment.DomainModel.Behavior,
> OneTechnologies.CreditFulfillment.DomainModel" column="BehaviorId"/>
> </bag>
> </subclass>
> </class>
> </hibernate-mapping>
>
> I created the following CTE to load a complete scenario
>
> With ScenarioLoad(Id, BehaviorType, [Name], [Description],
> IsDefault, StartDate, EndDate,
> ScenarioId, Depth)
> AS (
> SELECT Id, BehaviorType, [Name], [Description],
> IsDefault, StartDate, EndDate,
> NULL as ScenarioId, 1 as Depth
> FROM Behaviors b WHERE b.BehaviorType = 'S' AND
> NOT EXISTS (
> SELECT bs.ScenarioId from Behavior_Scenario bs
> WHERE bs.BehaviorId = b.Id)
> UNION ALL
> SELECT b.Id, b.BehaviorType, b.Name, b.Description,
> b.IsDefault, b.StartDate, b.EndDate,
> bs.ScenarioId, sl.Depth + 1 as Depth
> FROM ScenarioLoad sl
> INNER JOIN Behavior_Scenario bs
> ON sl.Id = bs.ScenarioId
> INNER JOIN Behaviors b
> ON b.Id = bs.BehaviorId
> WHERE b.BehaviorType = 'S'
> )
> SELECT {query.*}, {b.*}, query.Depth FROM ScenarioLoad query
> LEFT JOIN Behavior_Scenario bs ON bs.ScenarioId = query.Id
> LEFT JOIN Behaviors b ON b.Id = bs.BehaviorId
> ORDER BY Depth
>
> I am trying to create a sql query for this but have failed trying to fetch
> the Scenario.Behaviors association.
> I have done the following
>
> ISqlQuery query = xxxx
> query.AddEntity("query", typeof(Scenario));
> query.AddJoin("query.Behaviors", "b");
>
> However I get a nullreference expection in
> NHibernate.Loader.Custom.Sql.SQLQueryParser.ResolveProperties(...)
> I have had no problem with One-To-Many associations so I must have the
> syntax for Many-To-Many wroing
>
> Does ISqlQuery support Many-To-Many and if so how do you describe it.
>
> thanks,
> craig
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---