Sorry, it took a while to setup my build for OpenJPA enhancer. The problem does not happen if I run the enhancer.
-----Original Message----- From: Patrick Linskey [mailto:[EMAIL PROTECTED] Sent: Monday, October 29, 2007 3:07 PM To: [email protected] Subject: Re: OneToMany - related entry not getting persisted? > Yes, let me know what additional information you would need to reproduce > this. It's a pretty straight forward test case. Ideally, the actual sources. In the absence of the source code: - what access type are you using? - what are all your OpenJPA configuration options set to? - does this happen if you do run the OpenJPA enhancer? -Patrick On 10/29/07, Ajay Aggarwal <[EMAIL PROTECTED]> wrote: > Yes, let me know what additional information you would need to reproduce > this. It's a pretty straight forward test case. > > I have two entity beans A and B > A has OneToMany relationship to B with persist=ALL, fetch=LAZY > There is no inverse relation from B to A. > I am using it inside servlets (inside WebSphere Application Server 6.1) > Now inside a transaction > - I find an instance of A using entity manager > - I get the list of 'B' from this instance of A and add a new instance > of B to this list > - I commit this transaction > > The new instance of B does not get added. > > However if I change fetch=EAGER for this relation, things work fine and > new instance of B above gets inserted. > > One more piece of information. I am not using OpenJPA enhancer and when > I deploy my application with fetch=LAZY I see this log/error. Note: In > my actual application RecPolicy has OneToMany relation to CallLog. > > [10/25/07 12:45:22:129 EDT] 00000024 SystemErr R 5517137 > covApiService INFO [WebContainer : 2] openjpa.Enhance - Creating > subclass and redefining methods for "[class > com.covergence.soa.covapi.recpolicy.CallLog, class > com.covergence.soa.covapi.recpolicy.RecPolicy]". This means that your > application will be less efficient than it would if you ran the OpenJPA > enhancer. > > -----Original Message----- > From: Patrick Linskey [mailto:[EMAIL PROTECTED] > Sent: Monday, October 29, 2007 1:18 PM > To: [email protected] > Subject: Re: OneToMany - related entry not getting persisted? > > Hi, > > Given that it's a one-sided OneToMany, it sounds like it might be a > bug. Is it possible for you to provide us with more information, or > even a test case that fails? > > Thanks, > > -Patrick > > On 10/26/07, Ajay Aggarwal <[EMAIL PROTECTED]> wrote: > > 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? > > > > > > > > > > > -- > Patrick Linskey > 202 669 5907 > -- Patrick Linskey 202 669 5907
