Kevin,

Shouldn't refresh() ignore the state of an entity? How would an EM know if the data in the database has changed or not?

thanks,
-marina

Kevin Sutter wrote:
Okay, I'm narrowing in on this problem.  It seems to be related to the
automatic runtime enhancement.  Given my simple update to the
TestPersistence testcase that I posted earlier to this thread and not
statically pre-enhancing the Entities will easily reproduce the problem.  It
seems that the automatic PC subclassing is not properly detecting updates to
the Entities and, thus, when we do a refresh(), there's nothing to indicate
that the Entity is dirty and, thus, no reload from the database.

If I change the scenario and do the pre-enhancement, then the setting of the
attributes on AllFieldTypes and NamedEntity will properly dirty the Entities
and they will be reloaded when the refresh() is invoked.

Is this one of the known limitations with the automatic runtime enhancement
or is a JIRA Issue required to track this problem?

Thanks,
Kevin

On 10/4/07, Kevin Sutter <[EMAIL PROTECTED]> wrote:

Pinaki,
No caching is turned on.  The only cache that I am aware of that is turned
on by default is the Query Compilation Cache.  All other caches need to be
explicitly configured.  I have not configured for any caches.  I am running
with the standard "test" persistence unit definition in our
persistence.xml file.

Kevin

On 10/4/07, Pinaki Poddar <[EMAIL PROTECTED]> wrote:

Is L2 cache configured for this experiment? If datacache is active, then
that the state may be delivered from there itself without hitting the
database.
Does the test behave differently, if you set
  a) datacahe off
or b) evict from both L1 and L2 cache before refresh?
   To ensure that em.evict() acts on L2 cahce too, please set <property
name="openjpa.BrokerImpl" value="EvictFromDataCache=true"/>

Pinaki Poddar
972.834.2865



-----Original Message-----
From: Kevin Sutter [mailto:[EMAIL PROTECTED]
Sent: Thursday, October 04, 2007 3:59 PM
To: [email protected]
Subject: em.refresh() semantics

Hi,

From reading the spec and the Pro EJB 3 book, I was under the

impression that a call to em.refresh() would refresh from the
database regardless.  No questions asked.  But, I am finding
that we don't work that way.  I made a simple update to our
simple PersistenceTest using the AllFieldTypes (non-versioned)
and NamedEntity (versioned) objects.  And, neither one will
load when refresh() is called.  For some reason, with the
AllFieldTypes, none of the fields are being detected as being
updated.  And, with the NamedEntity, since the version field
hasn't been updated, then it doesn't refresh the rest of the object.


From my reading, this doesn't sound like proper processing.

But, before I start making any changes, I'm looking for
alternate interpretations of the spec.  Thanks.

I've attached a patch for PersistenceTest, if you are
interested in trying it out.

Kevin



Notice:  This email message, together with any attachments, may contain
information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
entities,  that may be confidential,  proprietary,  copyrighted  and/or
legally privileged, and is intended solely for the use of the individual or
entity named in this message. If you are not the intended recipient, and
have received this message in error, please immediately return this by email
and then delete it.





Reply via email to