I think you have a problem with the duplication/triplication of the property
"Id" in each subclass

2009/3/4 Scott Belchak <[email protected]>

> Sorry,
>
> <?xml version="1.0" encoding="utf-8"?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="true"
> assembly="RedBranch.LeagueFinder.Model"
> namespace="RedBranch.LeagueFinder.Model">
>   <class name="League" table="`League`" xmlns="urn:nhibernate-mapping-2.2">
>     <cache usage="read-write" />
>     <cache usage="read-write" />
>     <id name="Id" column="Id" type="Guid">
>       <generator class="guid" />
>     </id>
>     <!--Snip-->
>     <joined-subclass name="RedBranch.LeagueFinder.Model.MlbLeague,
> RedBranch.LeagueFinder.Model, Version=1.0.0.0, Culture=neutral,
> PublicKeyToken=null">
>       <key column="MlbLeagueId" />
>       <property name="Id" type="Guid">
>         <column name="Id" />
>       </property>
>       <!--Snip-->
>     </joined-subclass>
>       <joined-subclass name="RedBranch.LeagueFinder.Model.NflLeague,
> RedBranch.LeagueFinder.Model, Version=1.0.0.0, Culture=neutral,
> PublicKeyToken=null">
>           <key column="NflLeagueId" />
>           <property name="Id" type="Guid">
>               <column name="Id" />
>           </property>
>           <!--Snip-->
>       </joined-subclass>
>   </class>
> </hibernate-mapping>
>
>
>
>
>  var criteria = Session.CreateCriteria(typeof(League))
>                 .Add(Expression.Eq("Id", id))
>                 .Add(Expression.In("State", new Enum[] { LeagueState.Live,
> LeagueState.Closed, LeagueState.Open }));
>
> return criteria.UniqueResult<League>();
>
>
> On Wed, Mar 4, 2009 at 12:56 PM, Ayende Rahien <[email protected]> wrote:
>
>> Please show the real mapping, and the NH query that you try to use.
>>
>>
>> On Wed, Mar 4, 2009 at 10:03 AM, Scott Belchak <[email protected]> wrote:
>>
>>> I am stumped. I've been over this too many times and it's time for some
>>> extra eyes on my problem.
>>>
>>> I'm using FluentNHibernate for my mappings.
>>>
>>> The problem that I am having is that when I am querying my League table
>>> for a League that has a specified ID, the generated SQL tries to match the
>>> ID up with a Sub Classes ID instead of the parent class.
>>>
>>> For instance.
>>>
>>> League
>>> BaseballLeague : League
>>> FootballLeague : League
>>>
>>> I get nothing back if I pass in an ID of a FootballLeague.
>>>
>>> (all of the mapping for the main class gets done in the
>>> NamedDomainObjectMap)
>>>
>>> public class LeagueMap : NamedDomainObjectMap<League>
>>>     {
>>>         /// <summary>
>>>         /// Initializes a new instance of the LeagueMap class.
>>>         /// </summary>
>>>         public LeagueMap()
>>>             : base()
>>>         {
>>>             var ncaaMap = JoinedSubClass<NcaaLeague>("NcaaLeagueId", sub
>>> => sub.Map(x => x.Id));
>>>             var mlbMap = JoinedSubClass<MlbLeague>("MlbLeagueId", sub =>
>>> sub.Map(x => x.Id));
>>>         }
>>>    }
>>>
>>>
>>>
>>>
>>>   var criteria = Session.CreateCriteria(typeof(League))
>>>                 .Add(Expression.Eq("Id", id ))
>>>                 .UniqueResult<League>();
>>>
>>> the generated where statement is:
>>>
>>> WHERE  this_1_.Id* *= 'f5e2e4ef-a682-439f-b0f1-22906b71953d' /* @p0 */
>>>
>>> it works perfectly if I change it to WHERE* * this_.Id =
>>> 'f5e2e4ef-a682-439f-b0f1-22906b71953d' /* @p0 */
>>>
>>> So you see, it's going off the first subclass to be mapped.  What the
>>> hell is going wrong?
>>>
>>>
>>>
>>
>>
>>
>
> >
>


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