Why not just write queries (either Criteria or HQL) to get the
information you want?

In your first example, if you query for a particular person, you'll
get their Mum, Dad and BestFriend because they are related via the
BelongsTo property.  In your second example, if you have a Pet object
loaded from the database, it will already have a reference to it's
owner via the Owner property.

Or maybe I don't understand the question...

---
Patrick Steele
http://weblogs.asp.net/psteele



On Thu, Apr 21, 2011 at 4:06 AM, JoshG <[email protected]> wrote:
> Hi There,
>
> I have some data in which the relationships between objects are
> defined via multiple properties and "BelongsTo" attributes. What I
> would like to do is make a query that, given one object, I can
> retrieve a list of all other objects that have referenced that object
> via their properties.
>
> NOTE: I do not have knowledge of these types until runtime, so the
> solution may require reflection?
>
> For example take these classes:
>
> [ActiveRecord]
> public class Person : ActiveRecordBase<Person>
> {
>        private int m_id;
>        private Person m_mum;
>        private Person m_dad;
>        private Person m_bestFriend;
>
>        [PrimaryKey]
>        public int Id
>        {
>            get { return m_id; }
>            set { m_id = value; }
>        }
>
>        [BelongsTo]
>        public Person Mum
>        {
>            get { return m_mum; }
>            set { m_mum= value; }
>        }
>
>        [BelongsTo]
>        public Person Dad
>        {
>            get { return m_dad; }
>            set { m_dad= value; }
>        }
>
>        [BelongsTo]
>        public Person BestFriend
>        {
>            get { return m_bestFriend; }
>            set { m_bestFriend= value; }
>        }
> }
>
> [ActiveRecord]
> public class Pet: ActiveRecordBase<Pet>
> {
>        private int m_id;
>        private Person m_owner;
>
>        [PrimaryKey]
>        public int Id
>        {
>            get { return m_id; }
>            set { m_id = value; }
>        }
>
>        [BelongsTo]
>        public Person Owner
>        {
>            get { return m_mum; }
>            set { m_mum= value; }
>        }
> }
>
> I need to write a function that looks like:
> ActiveRecordBase[] FindRelated(ActiveRecordBase object);
>
> Such that if I pass in a Pet, it will return it's owner (if there is
> one)
> if I pass in a Person, it will return it's mum, dad, best friend, and
> pet.
>
> I thought I might be able to place a "HasManyToAny" attribute on each
> object and simply return that entire list when the query is executed,
> but the types are added dynamically and so adding metadata to the
> attributes to define valid types that the objects may be isn't
> possible in this case... unless it can be done without that?
>
> If anyone has any suggestions on how this might be achieved I would
> love to hear them. This is intended to make navigating a complex set
> of relationships between objects easier as I'll be able to display a
> relevant "See also" panel on the side of the object editor to quickly
> jump to relevant related objects.
>
> Similarly, this interface could be used to generate a graphic
> 'localised web' to visualise connections between objects.
>
> Thanks for the help and suggestions
>
> Josh
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Castle Project Users" 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/castle-project-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" 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/castle-project-users?hl=en.

Reply via email to