Hi Marc, I do like Boblitz's suggestion of using getReference. It's a little less weight than a full find() operation.
Kevin On Tue, Jun 3, 2014 at 9:07 AM, Marc Logemann <marc.logem...@gmail.com> wrote: > Rick, > > thanks for pointing out. I will check this too. But regardless of the > outcome, i think we will recode the stuff which is affected, because its > better coding style to load related entities and point the managed entities > to the desired other entities. This way people know whats going on without > relying on any ORM magic. > > > 2014-06-02 18:26 GMT+02:00 Rick Curtis <curti...@gmail.com>: > > > Marc -- > > > > I'm thinking that there was a change in cascade persist behavior that you > > might be running into. > > > > > > > http://openjpa.apache.org/builds/2.2.2/apache-openjpa/docs/jpa_2.2.html#jpa_2.2_cascadePersist > > > > > > On Mon, Jun 2, 2014 at 9:53 AM, Marc Logemann <marc.logem...@gmail.com> > > wrote: > > > > > Kevin, > > > > > > thanks for fast feedback. To your questions: > > > > > > 1) of course we could do the em.find() and do it the way it should be > > done > > > ;-) > > > > > > 2) no, we have not tried using em.merge(), this would be an option we > > could > > > check out. > > > > > > And yes. WE dont want to persist the CustomerType since its already > > there. > > > We just want to create the relationship. > > > > > > Thanks again. And now we will happily wait for Java8 Support in your > > > bytecode enhancer so that we could upgrade to latest Version of > OpenJPA > > > instead of being stuck to 2.2.0 ;-) > > > > > > Marc > > > > > > > > > 2014-06-02 16:11 GMT+02:00 Kevin Sutter <kwsut...@gmail.com>: > > > > > > > Hi Marc, > > > > Sorry for the troubles. Technically, it looks like you were lucky > and > > > > coding to a bug in the OpenJPA code. Since you just created this > > > > CustomerType, we have to assume that it's unmanaged. And, we can't > > > > automatically cascade the persist operation to this unmanaged entity. > > > And, > > > > in your particular case, we wouldn't want to persist this entity > since > > it > > > > already exists. > > > > > > > > Just to be clear, you don't want this CustomerType to be persisted, > > > right? > > > > You are just creating this to satisfy the relationship from Person, > > > right? > > > > > > > > A couple of ideas come to mind... > > > > > > > > 1) Can you do an em.find() operation on your CustomerType? I > realize > > > this > > > > is an extra SQL, but then this CustomerType would be managed and > > satisfy > > > > the requirement. > > > > > > > > 2) Have you tried using em.merge(p) instead of em.persist(p)? The > > merge > > > > should do either the update or insert based on the state of the > object. > > > > When we get to the CustomerType, we might have to do the extra SQL to > > > > determine if it exists already, but then we should be okay. This > JIRA > > > [1] > > > > from the 2.2.0 Release Notes [2] makes me think this might work... > > > > > > > > Maybe somebody else has some ideas on how to get around this > scenario. > > > > > > > > [1] https://issues.apache.org/jira/browse/OPENJPA-1896 > > > > [2] > > > > > > http://openjpa.apache.org/builds/2.2.0/apache-openjpa/RELEASE-NOTES.html > > > > > > > > > > > > > > > > > > > > On Mon, Jun 2, 2014 at 7:48 AM, Marc Logemann < > marc.logem...@gmail.com > > > > > > > wrote: > > > > > > > > > Hey, > > > > > > > > > > we recently switched to 2.2.0 (cant go higher because we use Java8) > > and > > > > we > > > > > found a change in behavior. > > > > > > > > > > Asumme we created a new Entity which looks like this: > > > > > > > > > > Person.java > > > > > ------------------ > > > > > int oid > > > > > String name > > > > > CustomerType adress > > > > > > > > > > > > > > > we created the object like so: > > > > > > > > > > Person p = new Person(); > > > > > p.setName("foo); > > > > > > > > > > CustomerType ct = new CustomerType(); > > > > > ct.setOid(1); // THIS OID already exists and we want to map the > > > existant > > > > > object to Person > > > > > > > > > > p.setCustomerType(ct); > > > > > > > > > > persist(p); > > > > > > > > > > > > > > > ===== > > > > > > > > > > In 2.1.0 OpemJPA knew that there is a CustomerType in the DB with > > this > > > > oid > > > > > and loads it automaticly and the child object is "managed". With > > 2.2.0 > > > > this > > > > > is no longer the case and we get a "Unmanaged bla bla bla > Exception". > > > We > > > > > relied on that behavior heavily and the rewrite is a tough for all > > > areas. > > > > > Is there some kind of config setting where i can set the "old > > > behavior". > > > > Or > > > > > was this old behavior a bug? ;-) > > > > > > > > > > Thanks for hints. > > > > > > > > > > Marc > > > > > > > > > > > > > > > > > > > > -- > > *Rick Curtis* > > >