Could you get them to create some kind of view that you could more easily
map Hibernate to? Just a shot in the dark but it may be a viable option the
DBA's are willing to entertain.

On Fri, Jul 2, 2010 at 10:08 AM, Sean Comerford
<[email protected]>wrote:

> Yeah, long story short, if I have the same columns in both tables (and thus
> the same fields for the Record key are in both Java entities), it works no
> problem.
>
> From what I gather in my googling of the problem, this is basically a
> limitation of JPA 1.0:
>
> if you want to do a relationship on a value that is part of a composite
> key, ALL key fields must be present in both classes. They don't need to
> actually be @Id fields in both classes... just present to use in the join
> logic.
>
> So the solution was to add owner and source to the RecordDetails table...
> not a big deal but seems weird JPA required that.
>
> But then I didn't design the schema and am by no means a DB expert so
> perhaps that should have been the DB design from the beginning.
>
>
> On Fri, Jul 2, 2010 at 8:23 AM, Josh Peters <[email protected]> wrote:
>
>> I found this article by IBM to be helpful for understanding Hibernate
>> + JPA and composite keys:
>> http://www.ibm.com/developerworks/opensource/library/os-hibernatejpa/index.html
>>
>> Short story: you'll have to extract your composite key into its own
>> class and then use that as the @Id field.
>>
>> Good luck.
>>
>> On Jul 1, 3:20 pm, Sean Comerford <[email protected]> wrote:
>> > Hours of googling have failed so I'm hoping one of you JavaPosse list
>> > geniuses can bail me out here :-)
>> >
>> > I have what I think is a pretty simple relationship between two DB
>> tables.
>> >
>> > Record
>> > ---------
>> >      int seqId (key)
>> >      int owner (key)
>> >      String source (key)
>> >      ... other non key fields ...
>> >
>> > RecordDetails
>> > -------------------
>> >     int genId (key)
>> >     int seqId
>> >     String detailsText
>> >
>> > So record has a one to many relationship with record details based on
>> the
>> > seqID.
>> >
>> > The catch here is the primary key in the record table is COMPOSITE
>> > consisting of seqId, owner and source (whereas RecordDetails pk is just
>> the
>> > generated column genId).
>> >
>> > Starting with just having:
>> >
>> > @OneToMany
>> > @JoinColumn(name="seqId")
>> > private List<RecordDetails> details ...
>> >
>> > I've tried 18 different ways to model this in JPA / Hibernate and after
>> much
>> > googling still can't get it to work.
>> >
>> > The jist of my googling seems to be that there's a limitation in JPA 1.0
>> in
>> > that ManyToOne and OneToMany relationships on foreign keys MUST have the
>> > same key columns.
>> >
>> > My gut feeling is there MUST be a way around this... I'm willing to use
>> > Hibernate annotations if necessary.
>> >
>> > Can anyone help me out?
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "The Java Posse" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<javaposse%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/javaposse?hl=en.
>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "The Java Posse" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<javaposse%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/javaposse?hl=en.
>



-- 
Robert Casto
www.IWantFreeShipping.com
Find Amazon Filler Items easily!

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" 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/javaposse?hl=en.

Reply via email to