You still need to define the relationship in book. I would do it like
this:
<object name="book" table="book" decorator="contentobjects.BaseBean">
<id name="ID" column="BookID" type="numeric"/>
<property name="Title" type="string"/>
<property name="Summary" type="string"/>
<property name="Author" type="string"/>
<property name="Illustrator" type="string" nullable="true"/>
<property name="DatePublished" type="date" nullable="true"/>
<property name="BookImage" type="string"/>
<onetomany name="Theme">
<link to=booktheme" column="bookid" />
<collection type="array">
</collection>
</onetomany>
</object>
<object name="booktheme" table="booktheme"
decorator="contentobjects.BaseBean">
<compositeid>
<manytoone name="book"/>
<manytoone name="theme"/>
</compositeid>
<manytoone name="book" lazy="true">
<link to="stories.book" column="BookID"/>
</manytoone>
<manytoone name="theme" lazy="true">
<link to="stories.theme" column="BookID"/>
</manytoone>
<property name="StarRating" type="numeric"/>
</object>
You can avoid recursion issues by setting lazy="true" on your
manytoone composition relationships in the composite (as I did
above). With this relationship, you can pull up an array of all of
the themes applied to a book with book.getThemeArray(); Since you
have a composite key, it appears you can have multiple themes applied
to a book.
Also, if you don't care about composition on your composite key, you
can also reference property instead instead of doing a composition
relationship. ie.,
<object name="booktheme" table="booktheme"
decorator="contentobjects.BaseBean">
<compositeid>
<property name="bookID" column="bookID" />
<property name="themeID" column="themeID" />
</compositeid>
<property name="StarRating" type="numeric"/>
</object>
On Oct 17, 9:39 am, "Stephen Moretti" <[EMAIL PROTECTED]>
wrote:
> I think I've got the wrong end of the stick or something, but I don't seem
> to be able to get a link relationship working that has a composite key. What
> I have is :
>
> book -< booktheme >- theme
>
> so I have the following objects :
> <object name="book" table="book" decorator="contentobjects.BaseBean">
> <id name="ID" column="BookID" type="numeric"/>
> <property name="Title" type="string"/>
> <property name="Summary" type="string"/>
> <property name="Author" type="string"/>
> <property name="Illustrator" type="string" nullable="true"/>
> <property name="DatePublished" type="date" nullable="true"/>
> <property name="BookImage" type="string"/>
> </object>
> <object name="booktheme" table="booktheme"
> decorator="contentobjects.BaseBean">
> <compositeid>
> <manytoone name="book"/>
> <manytoone name="theme"/>
> </compositeid>
> <manytoone name="book">
> <link to="stories.book" column="BookID"/>
> </manytoone>
> <manytoone name="theme">
> <link to="stories.theme" column="BookID"/>
> </manytoone>
> <property name="StarRating" type="numeric"/>
> </object>
>
> <object name="theme" table="theme" decorator="contentobjects.BaseBean">
> <id name="ID" column="ThemeID" type="numeric"/>
> <property name="Title" type="string"/>
> <property name="UniqueName" type="string"/>
> </object>
>
> (Please don't ask why I'm aliasing my id's to ID instead of using the column
> name - its a sore point)
>
> For whatever reason, I kind of assumed that I would be able to see booktheme
> in my book and theme objects via the generated methods, but I'm not. I'm
> not sure if I've got something wrong or what I need to do make book theme
> appear in book or theme or even a struct/array of theme object in book, and
> vice versa. I did think of putting a one to many in book, but then I have a
> circular reference which invariably ends with a getMemento loop and a
> 500 server error.
>
> I don't know... kinda confused.... Any help would be appreciated.
>
> Stephen
--~--~---------~--~----~------------~-------~--~----~
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
You received this message because you are subscribed to the Google Groups
"transfer-dev" 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/transfer-dev?hl=en
-~----------~----~----~----~------~----~------~--~---