« Return to Thread: JPA OneToOne with Primary Key FK Question

Re: JPA OneToOne with Primary Key FK Question

by James Sutherland :: Rate this Message:

Reply to Author | View in Thread

The issue is that you need to set the AccountDetails accountId2, it will not be set for you.  You can do this by first persisting the Account, then creating the AccountDetails and setting its' account and accountId2 to the Account.  You might also be able to do this in an event.

see,
http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Primary_Keys_through_OneToOne_Relationships


Tim Hollosy wrote:
I'm having a hard time with a OneToOne with a Primary Key as Foriegn
Key relationship.

The secondary table is not getting the PK set, it's going in as null,
instead of grabbing

Here's the EO's.

Account and AccountDetails

They both share account_id as PK's.

I set the relationships on both sides and persist the account object,
the insert on the account_details fails with a null account_id.

Account
---
public class Accounts extends CreatedByModifiedByBaseEntity implements
Serializable {
        @Id
        @GeneratedValue(generator="ACCOUNT_ID_SEQ",strategy=GenerationType.SEQUENCE)
        @SequenceGenerator(name="ACCOUNT_ID_SEQ",sequenceName="crm.\"ACCOUNT_ID_SEQ\"",allocationSize=1)
        @Column(name="account_id")
        private Long accountId;

        @OneToOne(mappedBy="accountId",cascade=PERSIST)
        private AccountDetails accountDetails;

Account_Details
---
public class AccountDetails extends ModifiedByBaseEntity implements
Serializable {
        @Id
        @Column(name="account_id")
        private Long accountId2;

        @OneToOne
        @PrimaryKeyJoinColumn
        private Accounts accountId;

--
./tch

 « Return to Thread: JPA OneToOne with Primary Key FK Question