Since all the Entities have integer primary keys, there is no way to
discriminate between what entity owns what a row in table D because it
could be any one of the first three. The join table is a requirement
otherwise there needs to be an attribute added to the table which
contains D to tell AR (or any SQL query) which of the three entities
owns that row, similar to what the Any attribute does.

On Jun 5, 1:03 pm, Thi <[email protected]> wrote:
> From a design standpoint, I wonder which would be the best solution,
> having a join table or simply letting FKs add up as columns on the D
> table. Join tables sounds more elegant, a single table sounds way
> easier to implement/maintain, hm.
>
> On Jun 4, 11:12 am, Jason Sznol <[email protected]> wrote:
>
> > I don't want to start a new topic regarding this but I was able to fix
> > my problem. By putting a HasAndBelongsToMany Attribute on my three
> > entities owning the last entity, I was able to force ActiveRecord and
> > hbm2ddl to use a join table so the schema looks like this
> > (ParentEntityTable x ParentChildEntityJoinTable x ChildEntityTable).
> > This solved my issue completely; however, I was reading some use cases
> > where if you put a Unique attribute on the many-to-many relationship
> > you force it to become a one-to-many relationship with a join table. I
> > do not see the unique attribute on the HasAndBelongsToMany attribute
> > and I cannot think of any other way to get ActiveRecord to create this
> > schema. Any ideas if this will be implemented or how to do it?
>
> > On May 27, 4:22 pm, Markus Zywitza <[email protected]> wrote:
>
> > > It might work with an explicit Any-Property in D. You must never
> > > forget that even unidirectional relations are relations. And on the
> > > database, one-to-many relations are implemented with FKs on the
> > > one-side, regardless of whether AR hides that from the model or not.
>
> > > -Markus
>
> > > 2009/5/27 Hexedit <[email protected]>:
>
> > > > I apologize I worded my first message improperly. D should have no
> > > > knowledge
> > > > of the Entities A, B or C. In my object there is no Property for
> > > > linking back to
> > > > any one of the other entities. So it is a one sidedHasManywith no
> > > > related BelongsTo.
> > > > I suppose an Any tag would work well in this situation but I'm not
> > > > sure how to configure
> > > > it or if it even works with aHasManyon the other side of the
> > > > relation. Assuming that
> > > > my domains A, B, and C never have conflicting integer primary keys,
> > > > this shouldn't be
> > > > an issue correct?
>
> > > > On May 27, 10:56 am, Markus Zywitza <[email protected]> wrote:
> > > >> You have A, B and C pointing to D: Ergo, D has an implicit many-to-one
> > > >> to A, B and C, which is hidden in AR due to the unidirectional
> > > >> relation. Now you want that D only has one many-to-one connection,
> > > >> which will direct to A, B or C. This seems impossible: How should AR
> > > >> know from an integer to which of the classes A, B or C it belongs? If
> > > >> you use Identity, the same key might be used in A, B and C, leaving AR
> > > >> clueless of what to load.
>
> > > >> You need three FK columns in D if A, B and C are not related. If they
> > > >> belong to the same base class, you can define theHasManythere, but
> > > >> with unrelated classes your scenario is impossible.
>
> > > >> -Markus
>
> > > >> 2009/5/27 Hexedit <[email protected]>:
>
> > > >> > I have three unique entity classes that each have a collection of a
> > > >> > fourth entity via theHasManyattribute. The mappings should be one-to-
> > > >> > many unidirectional relationships from entities A, B, and C to entity
> > > >> > D. EachHasManyattribute references the same table and the same
> > > >> > column for the foreign key. Since the referenced column is an integer
> > > >> > it should not matter that it could be pointing to objects from 3
> > > >> > tables. The problem is that the generation tool non-deterministically
> > > >> > picks one of the first three entities and creates a foreign key
> > > >> > relationship from the reference column in the 4th entity table to the
> > > >> > entity that owns that relation. Is there any way for me to override
> > > >> > this behavior and make it so that the Many side of theHasMany
> > > >> > relationship doesn't foreign key back to the first table?
--~--~---------~--~----~------------~-------~--~----~
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