Also if you write unit tests as you go, you will not get so far into a project that it becomes a real mystery to isolate a problem. A unit test of the first hbm would show an issue.
John Davidson On Sun, Aug 22, 2010 at 8:54 AM, Diego Mijelshon <[email protected]>wrote: > Assemblies don't have a default namespace. That's just a VS project > setting. > > Diego > > > > On Sat, Aug 21, 2010 at 23:18, [email protected] < > [email protected]> wrote: > >> I got it to work! For future reference, there were two errors: >> >> 1) where I had assembly="Genesis.Domain" I also needed >> namespace="Genesis.Domain". Apparently it doesn't assume the default >> namespace of the assembly. >> >> 2) Cast error between <set> and IList. I had to use <bag>. >> >> =) >> >> Thanks again for your attention! >> >> On Aug 21, 9:50 pm, John Davidson <[email protected]> wrote: >> > I didn't see a ForumId the Moderator class or the Moderators table, >> instead >> > you have a UserId, but no way to link a Forum to a Moderator. I think >> you >> > need to add a foreign key column. >> > >> > Seehttp:// >> knol.google.com/k/fabio-maulo/nhibernate-chapter-6-collection-... >> > >> > John Davidson >> > >> > On Sat, Aug 21, 2010 at 9:22 PM, [email protected] < >> > >> > >> > >> > [email protected]> wrote: >> > > Ok. For comparison (maybe you can spot something I didn't). >> > >> > > First, the class: >> > >> > > using System.Collections.Generic; >> > >> > > namespace Genesis.Domain >> > > { >> > >> > > public class Forum >> > > { >> > >> > > private IList<Forum> forums = new List<Forum>(); >> > >> > > private IList<Moderator> moderators = new List<Moderator>(); >> > >> > > private IList<Thread> threads = new List<Thread>(); >> > >> > > public virtual int Id { get; protected set; } >> > >> > > public virtual int Sequence { get; set; } >> > >> > > public virtual string Title { get; set; } >> > >> > > public virtual string Description { get; set; } >> > >> > > public virtual bool Moderated { get; set; } >> > >> > > public virtual bool Enabled { get; set; } >> > >> > > public virtual bool Visible { get; set; } >> > >> > > public virtual IEnumerable<Forum> Forums { get { return >> > > forums; } } >> > >> > > public virtual IEnumerable<Moderator> Moderators { get >> > > { return moderators; } } >> > >> > > public virtual IEnumerable<Thread> Threads { get { return >> > > threads; } } >> > >> > > public virtual void AddForum(Forum forum) >> > > { >> > >> > > if (!forums.Contains(forum)) >> > > forums.Add(forum); >> > >> > > } >> > >> > > public virtual void RemoveForum(Forum forum) >> > > { >> > >> > > if (forums.Contains(forum)) >> > > forums.Remove(forum); >> > >> > > } >> > >> > > public virtual void AddModerator(Moderator moderator) >> > > { >> > >> > > if (!moderators.Contains(moderator)) >> > > moderators.Add(moderator); >> > >> > > } >> > >> > > public virtual void RemoveModerator(Moderator moderator) >> > > { >> > >> > > if (moderators.Contains(moderator)) >> > > moderators.Remove(moderator); >> > >> > > } >> > >> > > public virtual void AddThread(Thread thread) >> > > { >> > >> > > if (!threads.Contains(thread)) >> > > threads.Add(thread); >> > >> > > } >> > >> > > public virtual void RemoveThread(Thread thread) >> > > { >> > >> > > if (threads.Contains(thread)) >> > > threads.Remove(thread); >> > >> > > } >> > >> > > } >> > >> > > } >> > >> > > Next, the map (set to Embedded resource btw): >> > >> > > <?xml version="1.0" encoding="utf-8" ?> >> > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >> > > assembly="Genesis.Domain"> >> > >> > > <class name="Forum" table="Forums"> >> > >> > > <id name="Id"> >> > > <generator class="native" /> >> > > </id> >> > >> > > <property name="Sequence" /> >> > > <property name="Title" /> >> > > <property name="Description" /> >> > > <property name="Moderated" /> >> > > <property name="Enabled" /> >> > > <property name="Visible" /> >> > >> > > <set name="Forums" cascade="all" access="field.camelcase"> >> > > <key column="ForumId" /> >> > > <one-to-many class="Forum" /> >> > > </set> >> > >> > > <set name="Moderators" cascade="all" access="field.camelcase"> >> > > <key column="ForumId" /> >> > > <one-to-many class="Moderator" /> >> > > </set> >> > >> > > <set name="Threads" cascade="all" access="field.camelcase"> >> > > <key column="ForumId" /> >> > > <one-to-many class="Thread" /> >> > > </set> >> > >> > > </class> >> > >> > > </hibernate-mapping> >> > >> > > Forums is recursive as you can see. If you need more, let me know. And >> > > thanks for taking your valuable time to assist me. >> > >> > > On Aug 21, 9:15 pm, John Davidson <[email protected]> wrote: >> > > > How about posting any hbms with reference to the Moderator class? >> > >> > > > John Davidson >> > >> > > > On Sat, Aug 21, 2010 at 9:01 PM, [email protected] < >> > >> > > > [email protected]> wrote: >> > > > > Ok, I quadruple-checked just now, as per your suggestions. >> Everything >> > > > > matches up. Maybe I'm not doing something right. I am not going to >> > > > > post a ton of code unless you ask, but here's the basics: >> > >> > > > > Genesis.Domain.dll - contains the entities >> > > > > - Genesis.Domain.Code >> > > > > - Genesis.Domain.Favorite >> > > > > - Genesis.Domain.Forum >> > > > > - Genesis.Domain.Moderator >> > > > > - Genesis.Domain.Reply >> > > > > - Genesis.Domain.Subscription >> > > > > - Genesis.Domain.Thread >> > >> > > > > Genesis.Persistence.dll - contains the mappings >> > > > > - Genesis.Persistence.Mapping.Code.hbm.xml >> > > > > - Genesis.Persistence.Mapping.Favorite.hbm.xml >> > > > > - Genesis.Persistence.Mapping.Forum.hbm.xml >> > > > > - Genesis.Persistence.Mapping.Moderator.hbm.xml >> > > > > - Genesis.Persistence.Mapping.Reply.hbm.xml >> > > > > - Genesis.Persistence.Mapping.Subscription.hbm.xml >> > > > > - Genesis.Persistence.Mapping.Thread.hbm.xml >> > >> > > > > All public properties match between entity, map and table. There >> is >> > > > > one exception however... >> > >> > > > > The Thread and Reply entities both map to the Posts table, but >> they >> > > > > have the appropriate table="" attribute, so it shouldn't be a >> problem. >> > > > > I've been messing with this for a long time now (months), and am >> about >> > > > > to explode... >> > >> > > > > Is there any code, or hbm you'd like to see that might help? >> Perhaps >> > > > > one of the maps with a <set> in it? >> > >> > > > > On Aug 21, 7:32 pm, John Davidson <[email protected]> wrote: >> > > > > > Try to ensure that the class definition and properties match >> exactly >> > > to >> > > > > the >> > > > > > hbm and that the table definitions in your RDBM also match. >> > >> > > > > > John Davidson >> > >> > > > > > On Sat, Aug 21, 2010 at 7:02 PM, [email protected] < >> > >> > > > > > [email protected]> wrote: >> > > > > > > I have about 9 hbm's. This is the only one giving me the >> "cannot >> > > > > > > compile x - class not found" error. Any idea what's wrong? >> I've >> > > > > > > tripple-checked the spelling in ALL the hbm's. No errors >> found. >> > >> > > > > > > <?xml version="1.0" encoding="utf-8" ?> >> > > > > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >> > > > > > > assembly="Genesis" namespace="Genesis.Domain"> >> > >> > > > > > > <class name="Moderator" table="Moderators"> >> > >> > > > > > > <id name="Id"> >> > > > > > > <generator class="identity" /> >> > > > > > > </id> >> > >> > > > > > > <property name="UserId" /> >> > >> > > > > > > </class> >> > >> > > > > > > </hibernate-mapping> >> > >> > > > > > > -- >> > > > > > > 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]<nhusers%[email protected]> >> <nhusers%[email protected]<nhusers%[email protected]> >> > >> > > <nhusers%[email protected]<nhusers%[email protected]> >> <nhusers%252bunsubscr...@googlegroups.com> >> > > > >> > > > > <nhusers%[email protected]<nhusers%[email protected]> >> <nhusers%252bunsubscr...@googlegroups.com> >> > > <nhusers%252bunsubscr...@googlegroups.com> >> > > > > > >> > > > > > > . >> > > > > > > For more options, visit this group at >> > > > > > >http://groups.google.com/group/nhusers?hl=en.-Hidequoted text >> - >> > >> > > > > > - Show quoted text - >> > >> > > > > -- >> > > > > 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]<nhusers%[email protected]> >> <nhusers%[email protected]<nhusers%[email protected]> >> > >> > > <nhusers%[email protected]<nhusers%[email protected]> >> <nhusers%252bunsubscr...@googlegroups.com> >> > > > >> > > > > . >> > > > > For more options, visit this group at >> > > > >http://groups.google.com/group/nhusers?hl=en.-Hide quoted text - >> > >> > > > - Show quoted text - >> > >> > > -- >> > > 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]<nhusers%[email protected]> >> <nhusers%[email protected]<nhusers%[email protected]> >> > >> > > . >> > > For more options, visit this group at >> > >http://groups.google.com/group/nhusers?hl=en.- Hide quoted text - >> > >> > - Show quoted text - >> >> -- >> 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]<nhusers%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. >> >> > -- > 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]<nhusers%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. > -- 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.
