openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Albert Lee <allee8...@gmail.com>
Subject Re: Should the object returned from query be the same object with the new created one before being persistent?
Date Mon, 16 May 2011 15:15:43 GMT
Janet,

Based on the following spec description, typically (in tx scope) the query
result is NOT managed. If the result is an entity (since Query may return
various non-entity form) don't expect to get the same managed instance
object from your previous persist.

Albert Lee.

3.8.6 Query Execution
...
Query and TypedQuery methods other than the executeUpdate method are not
required to be
invoked within a transaction context, unless a lock mode other than
LockModeType.NONE has been
specified for the query. In particular, the getResultList and
getSingleResult methods are not
required to be invoked within a transaction context unless such a lock mode
has been specified for the
query.[47] *If an entity manager with transaction-scoped persistence context
is in use, the resulting entities
will be detached; if an entity manager with an extended persistence context
is used, they will be
managed.* See Chapter 7 for further discussion of entity manager use outside
a transaction and persistence
context types.


On Mon, May 16, 2011 at 4:48 AM, han hongfang <hanhongfang@gmail.com> wrote:

> Hi all,
>
> I add openjpa dev list into the loop as well. Looking forward to the
> expertise comments from both communities.
>
> ---------- Forwarded message ----------
> From: han hongfang <hanhongfang@gmail.com>
> Date: Mon, May 16, 2011 at 5:27 PM
> Subject: Should the object returned from query be the same object with the
> new created one before being persistent?
> To: dev@openejb.apache.org
>
>
> Hi devs,
>
> I'm looking for if EJB persistence spec has any word on the requirement of
> object movie_in and movie_out (see code snippet below). Should they be
> movie_in == movie_out or movie_in.equals(movie_out)?
>
>           EntityManager em = getEntityManager();
>           Movie movie_in = new Movie("MovieNameA", "DirectorNameA",
> "DescriptionA");
>           em.persist(movie_in);
>           em.flush();
>           Movie movie_out = (Movie) em.createQuery("select m from MOVIE m
> where m.name = 'MovieNameA' ").getSingleResult();
>
> I'm hunting in the ejb3.1 spec and persistence2.0 specs for a while, but
> failed to find the requirement. Can someone give me a hint on this? Thanks
> in advance.
>
> --
> Best regards,
>
> Han Hong Fang (Janet)
> hanhongfang AT apache.org
>
>
>
>
>
> --
> Best regards,
>
> Han Hong Fang (Janet)
> hanhongfang AT apache.org
>



-- 
Albert Lee.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message