Good ol' BalusC - that man has helped out a lot over the years.

Thanks for the tip Howard. I have previously done something similar with a request filter that would open/setup & clear down an entity manager & transaction for me. I certainly am thinking I could go down that route again but I'd obviously like to do things the best way. I've got a JavaEE book that I'm trying to find answers in but I find it's often easier & more informative just to ask real people :)

Regards,
Lee

Howard W. Smith, Jr. wrote:
Lee, I will let someone else answer your questions, but your test case
reminded me of a BalusC (JSF guru) blog[1] that I visited many months ago.
It does not answer your question, but it is an alternate solution for what
you are already attempting to do...I think. :)

[1] http://balusc.blogspot.com/2007/03/user-session-filter.html


On Fri, Aug 16, 2013 at 6:10 AM, leesy<[email protected]>  wrote:

I'm having trouble getting my head around Java EE, transactions&  lazy
loading&  I was wondering if anyone could be kind enough to help me get
things straight in my head.  It's something I've never quite got right.
I'll try&  keep the code samples in this email short, but I'll add links to
fuller examples at the end.  Sorry if this was better on say the OpenJPA
Users list.

I've got a piece of code that retrieves a `User` from the Database,
performs
some validation on it&  then attempts to create another DB object called
`StoredCookie` if that validation passes.  So imagine something like:



Now I'm having two separate troubles depending how I do things.

The first issue is that the User object u is being detached after the call
to findByEmail.  The customer property of user is defined using a FetchTYpe
of LAZY&  I believe this combined with my use of
TransactionAttributeType.REQUIRED at class level on my DAO's, is what is
causing the entity to come back detached.  So I've got over this hurdle by
adding a TransactionAttributeType of NEVER to any find methods.  This seems
to leave the user object detached.  Although this is what I want, I don't
think I'm doing things right as it's probably causing issue #2.

The second issue comes about when I call storedCookieDAO.persist(...).  It
gives me a message saying that "The given instance
"com.oobjects.sso.model.User-252" is not managed by this context".  The
user
is still attached to something, as I can fetch lazily fetched properties.
But as the UserDAO&  StoredCookieDAO shared an entity manager (checked the
hash codes to make sure they are the same), I'm a little confused as to
what
they are attached to.

Does anyone know what I'd need to do allow my StoredCookie to be persisted?
What is the User object attached to that's preventing it being persisted by
another DAO using the same entity manager?

Here are a few code samples of how I am attempting various bits:
https://gist.github.com/LTheobald/6248694
<https://gist.github.com/LTheobald/6248694>

Thanks for any help anyone can give,
Lee



--
View this message in context:
http://openejb.979440.n4.nabble.com/Java-EE-transactions-lazy-loading-tp4664670.html
Sent from the OpenEJB User mailing list archive at Nabble.com.


Reply via email to