Thanks for your response, Gavin!

True, my example is breaking a single relational association into two object associations. But there are use cases where that isn't the case, for example:

Parent class Animal, subclass Cat, subclass Dog

Class Household has a set of Cats and a set of Dogs

If you tried to do this without adding the discriminator, Hibernate would load all of the cats and dogs both into the Cats list and the Dogs list. To me it seems as though that isn't desired behavior. Whenever you have a set of a discriminated subclass, it seems like Hibernate should be intelligent enough to only load the records that match the discriminator for that subclass.

It's necessary whenever a parent could have links to subclasses of different types.

Jenica Humphreys
MountainView Software

At 08:23 AM 8/29/2003 +1000, you wrote:
This is absolutely intended. Hibernate shouldn't go putting possibly
unnecessary conditions on the join of its own accord. This where condition
is ONLY necessary if you have two different collections to discriminate
between. It is b/c you are breaking a *single* relational association into
*two* object associations.


> Considering the mappings below, a note can belong to two different types > of > owners. This is accomplished using a discriminator value. > > Why is an additional where attribute required to apply the discriminator > when another class has a set of a discriminated subclass? > > This is my third mention of this issue. No one seems to respond! I don't > know if I'm being unclear. I'll take a look at fixing it and submitting a > patch if it's not desired functionality, but I'm wondering if it works > this > way intentionally or if it is an oversight. > > Thanks for your help! > Jenica Humphreys > MountainView Software > > > //----------------- CONTACT MAPPING -------------------------------- > <class name="Note" table="RM_Note" discriminator-value="99" > > <id column="note_id" length="10" name="id" type="long" > unsaved-value="null" > > <generator class="identity" /> > </id> > > <discriminator column="owner_type_cd" type="int" force="true"/> > > <property column="title_txt" length="50" name="titleTxt" type="string"/> > <property column="note_userid" length="10" name="userid" type="string"/> > > <subclass name="ClaimNote" discriminator-value="0"> > <many-to-one name="claim" column="owner_id"/> > </subclass> > > <subclass name="ContactNote" discriminator-value="2"> > <many-to-one name="contact" column="owner_id"/> > </subclass> > > </class> > > //----------------- CONTACT MAPPING -------------------------------- > <class name="Contact" table="RM_CONTACT"> > <id name="contactId" type="long" column="contact_id" > unsaved-value="null"> > <generator class="identity" /> > </id> > > <property name="firstName" column="first_name" length="15" > type="string"/> > <property name="lastName" column="last_name" length="15" > type="string"/> > > <set name="notes" cascade="all" where="owner_type_cd=2" > > <key column="owner_id" /> > <one-to-many class="ContactNote"/> > </set> > </class> > > //------------------ CLAIM MAPPING ---------------------------------- > <class name="Claim" table="RM_CLAIM"> > <id name="claimId" type="long" column="claim_id" unsaved-value="null"> > <generator class="identity" /> > </id> > > <property name="claimNbr" column="claim_nbr" length="15" > type="string"/> > <property name="referenceNbr" column="ref_nbr" length="15" > type="string"/> > > <set name="notes" cascade="all" where="owner_type_cd=0" > > <key column="owner_id" /> > <one-to-many class="ClaimNote"/> > </set> > </class> > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > hibernate-devel mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/hibernate-devel >



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
hibernate-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hibernate-devel



------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ hibernate-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/hibernate-devel

Reply via email to