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

All you need is to set this query hint:

eclipselink.maintain-cache = false






On Mon, May 31, 2010 at 9:58 PM, Stephiems <stephanie@xxxxxxxxxxxxxx> wrote:
>
> Thanks, I actually tried em.refresh() before looking at this post, and was
> coming back to say that's what worked for me.
>
> I didn't know there was a query hint though, and I might try that, because I
> don't quite like having to explicitly call refresh in my function. Hopefully
> that works.
>
> I did think about the cache expiry, and maybe that will work, the problem
> is, the external file isn't always loaded at exactly the same time. Not my
> choice. But, I believe it is around the same time, so maybe I can set it to
> expire an hour or so after.
>
> Thanks for all the help from both of you...
>
>
> tware wrote:
>>
>> 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
>>>>
>>>>
>>>
>> _______________________________________________
>> eclipselink-users mailing list
>> eclipselink-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>
>>
>
> --
> View this message in context: http://old.nabble.com/Force-query-to-db-and-not-use-cache-tp28726862p28736956.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
>



-- 
Zarar Siddiqi
416-737-9024


Back to the top