Hi Evgeny,

The JPA spec is clear on the concept of a detached instance: the instance can be used without access to the underlying database or the persistence context whence it came. The instance can be serialized and used in a different tier entirely. The instance can be used in a completely different persistence context by attaching it to that different persistence context. Changes in the detached instance can be applied to the database once it is attached to a different persistence context.

If you want to continue to access unloaded fields from instances, you should not detach them in the first place, and not invalidate (close) the entity manager that manages the persistence context.

In my opinion, the TopLink behavior is an aberration.

By the way, the JPA.next specification is now open for changes, and you can give your input if you would like some different standard behavior.

Craig

On Sep 11, 2007, at 3:07 AM, Evgeny Shepelyuk wrote:

Hi,

Lazy loading is not available for detached entities -- by definition,
they are no longer associated with the database.

You can, however, control whether OpenJPA returns null or throws an
exception when an unloaded field is accessed.

If you want to be able to lazily access a field after a transaction
completes, you might want to consider keeping the entity manager open
for the duration of your request.


The idea is that Toplink JPA supports that feature. OpenJPA - no.
Maybe this can be done as some configurable behaviour ?

--
Best Regards
Evgeny K. Shepelyuk

Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:[EMAIL PROTECTED]
P.S. A good JDO? O, Gasp!

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to