Hi to all !! First of all I would like to thank the authors of Hibernate for a great piece of work. It really works !!!
I have already successfuly recommended Hibernate to couple of my colleagues. So the hibernated community is growing ... :) My question concerns best practices of using composite ID's in collection elements. The use case is the following: Stuff contains a set of StuffUnitFactors. It's a one-to-many relationship: StuffUnitFactor refers back to Stuff, refers to Unit and contains aditional property (bidirectional one-to-many) - property: double factor - many-to-one Unit - many-to-one Stuff I have also overriden the hashCode() and equals() methods on StuffUnitFactor so that they are equal when stuff && unit are equal In my code I am using the recommended patern for bi-directional parent-children relationship: StuffUnitFactor child= new StuffUnitFactor(); Stuff parent= session.load(parentId); parent.add(child); session.save(child); And then I have found out that it's possible to insert two child elements into database which are equal !!! QUESTION: How can I assure the uniquness of StuffUnitFactor in database ?? Of course the best solution would be if I have a primary key on StuffUnitFactor like: primary_key(stuff, unit) I have already tried to use what you recommend: <composite-element class="warehouse.persistent.StuffUnitFactor"> <property name="factor" type="double" update="true" insert="true" column="factor" not-null="true" /> <many-to-one name="parent" class="warehouse.persistent.Stuff" cascade="none" outer-join="auto" update="true" insert="true" column="parent" not-null="true" /> <many-to-one name="unit" class="warehouse.persistent.Unit" cascade="none" outer-join="auto" update="true" insert="true" column="unit" not-null="true" /> </composite-element> But it explicitly makes primary_key(stuff, unit, factor) which is completly useless as I want to have unique stuff-unit pair. Then I tried to make o composite ID on StuffUnitFactor itself - but I could not get it working as collection element .... Any ideas, practices ?? My Mapping files are like: <class name="warehouse.persistent.Stuff" table="stuff" dynamic-update="false" dynamic-insert="false" > <set name="stuffUnitFactors" lazy="true" inverse="true" cascade="all-delete-orphan" sort="unsorted" > <key column="parent" /> <one-to-many class="warehouse.persistent.StuffUnitFactor" /> </set> </class> <class name="warehouse.persistent.StuffUnitFactor" table="stuffunitfactor" dynamic-update="false" dynamic-insert="false" > <id name="id" column="id" type="java.lang.Long" > <generator class="sequence"> </generator> </id> <property name="factor" type="double" update="true" insert="true" column="factor" not-null="true" /> <many-to-one name="parent" class="warehouse.persistent.Stuff" cascade="none" outer-join="auto" update="true" insert="true" column="parent" not-null="true" /> <many-to-one name="unit" class="warehouse.persistent.Unit" cascade="none" outer-join="auto" update="true" insert="true" column="unit" not-null="true" /> </class> thanks for your help Wojtek Bentkowski ------------------------------------------------------- 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