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*
> >
>

Reply via email to