File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Object Relational Mapping and the fly likes OneToOne composite key Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "OneToOne composite key" Watch "OneToOne composite key" New topic

OneToOne composite key

nimo frey
Ranch Hand

Joined: Jun 28, 2008
Posts: 580
I get this failure by mapping a OneToOne-Relationship:

The ProductID of table Product is a composite key which has the SAME Columns than the composite key ItemID in table Item:

This HQL works and returns the item-instance of a product:

This HQL does not work and returns the exception:

Instead of JoinColumn, I have tried it with PrimaryKeyJoinColumns (the same exception occurs):

(Another point is, when I annotate the @OneToOne above the getter instead above the field, then Hibernate totally ignores my OneToOne-Mapping and recognices the Item-Instance (or Product-Instance) as a column instead of a relationship, hence it produces false sql-selects)

I have also tried to use the PrimaryKeyJoinColumns-Relation in Class Product:

and delete the relation in Class Item
(to make the oneToOne at least unidirectional):

Doing that HQL:

returns the same failure:

Do I have to use Hibernates ForeignGenerator within my Item-Class (I have a composite key!) ?:

Please, can you say me: What is wrong with my mapping?

It is really hard to believe that such a OneToOne-Mapping with a composite key is so hard to implement by using ORM (Hibernate).
Such relationships are very common.
I agree. Here's the link:
subject: OneToOne composite key
It's not a secret anymore!