Should the ID be set to the subclasses key? Or should it not even exist at all?
On Wed, Mar 4, 2009 at 1:58 PM, Fabio Maulo <[email protected]> wrote: > 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 -~----------~----~----~----~------~----~------~--~---
