Hi Fay, The primary key for TblScmpdt is database generated. Here's the mapping:
@TableGenerator(name="baseGenerator",schema="EBSTATUS",table="TBL_KEYGEN",pkColumnName="PRIMARY_KEY_COLUMN" ,valueColumnName="LAST_USED_ID",pkColumnValue="TBL_SCMPDT_ID",allocationSize=100) @Id @GeneratedValue(strategy=GenerationType.TABLE,generator="baseGenerator") @Column(name = "SCMPDT_ID",nullable=false) private Integer scmpdtId; As I mentioned in my previous post, the code works (no exceptions), but its flawed because of the bug in JPA when performing a cascade persist on a OneToMany entity where the child (many) entity has a composite key. I should simply be able to do the following: TblScmpdt tblScmpdt = new TblScmpdt(); //new (non-persistent) parent entity //set fields on tblScmpdt ... TblPdtbnf tblPdtbnf = new TblPdtbnf(); //new (non-persistent) child entity //set fields on tblPdtbnf ... tblScmpdt.addTblpdtbnf(tblPdtbnf); //see method below, which sets the parent referrence on child //TblScmpdt method: public void addTblPdtbnf(TblPdtbnf tblPdtbnf) { tblPdtbnf.setTblScmpdt(this); //need to set both sides of bidirectional relationship getTblPdtbnfs().add(tblPdtbnf); } //Now I should be able to persist parent and cascade persist child automatically according to JPA docs tblScmpdt = em.merge(tblScmpdt); ...but unfortunately, the above doesn't work. I have to merge/persist the parent first > then get the ID of the newly persisted parent and set it on the new child > then add the child to the parent > then merge the parent again. Tedious! Do you understand the problem? Regarding TblPdtbnfcde, this is a OneToOne reference on TblPdtbnf. TblPdtbnf's composite primary key is made up of TblPdtbnfcde.pdtbnfId and TblScmpdt.scmpdtId By the way, cascade persist works fine on my other OneToMany classes where there isn't a composite key. So this is definitely a bug. Enrico, What is the primary key field in the TblScmpdt entity? Did you set primary key for tblScmpdt before calling merge? I made an integer primary key field in TblScmpdt, and set the primary key to 1 in tblScmpdt before calling merge, and your test code works fine for me (I also omit TblPdtbnfcde in your test code for lack of detailed information). If you already set the primary key and still get the error, please specify more detail of your TblScmpdt class. -f -- View this message in context: http://www.nabble.com/%40OneToMany-%40ManyToOne%2C-Bidirectional%2C-Composite-Key-BUG-tp17801245p17839130.html Sent from the OpenJPA Users mailing list archive at Nabble.com.