Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Force query to db and not use cache

Some things to try:

Refreshing:

Either use the em.refresh() API, or use the query hint:

eclipselink.refresh=true

Cache Expiry:

The cache can be set to expire at a certain time of day or after a certain amount of time. Here is some info about how to set the cache to expire at a certain time of day:

http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29#How_to_Use_the_.40TimeOfDay_Annotation

-Tom


Stephiems wrote:
Ok, I realized I didn't look at my log close enough.

I had tried this:

query.setHint(QueryHints.CACHE_USAGE, CacheUsage.DoNotCheckCache);

and I tried your suggestion as well.

Both have the same result. My query does show the sql, so it seems like it
is going to the database, but it doesn't seem to pick up a new object.

Basically, before, it looked like it wasn't even trying to query anything,
no sql statement showed up in my logs. With the query hint, there is a
query, but after the query I print out the object in my log to check the
result, and the value I had manually changed in the database, isn't correct.
Here is my code:

logger.debug("Getting customer...");
Customer customer = customerService.getCustomer(customerId);
logger.debug("Done getting customer...");
logger.debug("Customer: " + customer);

Before I put in the query hint, on the first call of the struts2 action
which the lines above are in, there is a query between the Getting and Done
getting statements. On the second call, there is nothing.

After I put in the query hint, there is an sql statement between the two,
but when I print out the customer object, even though I changed a value in
the database, it doesn't seem to be picked up, even though it looks like it
returns to the database.



Michael Bar-Sinai wrote:
I have no experience with spring, but this works in JEE5:

public class JpaUtils {

    /**
     * Makes q ignore the cache.
     * @param q the query that has to go straight to the DB.
     * @return q the query that will go to the db now
     */
    public static Query noCache( Query q ) {
        // /!\ Eclipselink specific. Should make the em go straight to the
DB.
        q.setHint("org.eclipse.persistence.config.CacheUsage",
"DoNotCheckCache");
        return q;
    }

}


On Mon, May 31, 2010 at 8:26 AM, Stephiems <stephanie@xxxxxxxxxxxxxx>
wrote:

I've done a search through this forum and tried just about everything
I've
found on here from query hints to the cache annotation and properties in
the
persistence.xml file and I cannot force a particular entity to go to the
database every time.

I have a table that is updated by an outside source every day, and I want
to
force going to the database everytime to pick up any changes. No matter
what
I do it doesn't go to the database the second time.

I'm wondering if it is the transaction, or possibly the fact I'm using
spring, that is causing it. Anyone else have this issue?

Cheers,
Stephanie
--
View this message in context:
http://old.nabble.com/Force-query-to-db-and-not-use-cache-tp28726862p28726862.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.

_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users

_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users





Back to the top