If I use FetchType.EAGER for my @OneToMany relation, things work fine and I correctly see following SQL statements in the trace log - INSERT for new row into 'callLog' - UPDATE for 'recPolicy' - INSERT for a new row into association table 'recPolicy_callLog'
So the question remains why is this not working for FetchType.LAZY? Is this a bug in openJPA 1.0 or incorrect-usage / user-error on my part? -----Original Message----- From: Ajay Aggarwal [mailto:[EMAIL PROTECTED] Sent: Friday, October 26, 2007 1:39 PM To: [email protected] Subject: RE: OneToMany - related entry not getting persisted? Thanks. But in my case, I do not have a ManyToOne relation on the other side and that's on purpose. -----Original Message----- From: Gul Onural [mailto:[EMAIL PROTECTED] Sent: Friday, October 26, 2007 1:30 PM To: [email protected] Subject: RE: OneToMany - related entry not getting persisted? Have you checked http://forums.java.net/jive/message.jspa?messageID=212597. I believe that will answer your question. Gul -----Original Message----- From: Ajay Aggarwal [mailto:[EMAIL PROTECTED] Sent: Friday, October 26, 2007 1:19 PM To: [email protected] Subject: OneToMany - related entry not getting persisted? I am using openjpa1.0. My main entity class is RecPolicy which has a @OneToMany relation to entity 'CallLog'. I am using FetchType.LAZY and CascadeType.ALL. See below: Public class RecPolicy { ... @OneToMany (fetch=FetchType.LAZY, cascade=CascadeType.ALL) private List <CallLog> calls; } Now I am trying to add a CallLog entry to an existing RecPolicy entry, but it's not working. My code looks like EntityManager em = factory.createEntityManager(); EntityTransaction tx = em.getTransaction(); try { tx.begin(); RecPolicy.RecPolicyId policyId = ... RecPolicy policy = em.find(RecPolicy.class, policyId); CallLog callLog = new CallLog(sid, this.fromUri, this.toUri); policy.calls.add(callLog); tx.commit(); } catch (Exception e) { if (tx.isActive()) tx.rollback(); } finally { em.close(); } When I enable openjpa logging all I see is an UPDATE sql to update the RecPolicy, but no INSERT for CallLog? Do I need to persist new CallLog above explicitly? Is 'LAZY' fetch causing this behavior?
