Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [eclipselink-users] Eclipselink retrieves old data, but data is already updated in the database. Where does it get the old data from?

Adding refresh hint to the query would certainly fetch the fresh data from the db, however you may want to ponder upon if it's the right way to solve the problem. Using refresh hint means you are losing the benefit of eclipselink secondary cache. This may add on the processing on the db as well as data being transferred over the network.

IMHO a good architecture would be to provide the access to data via single entity manager in order to avoid stale data problems. The data access services could be shared by multiple clients in order to achieve this.

Shashi

-----Original Message-----
From: eclipselink-users-bounces@xxxxxxxxxxx [mailto:eclipselink-users-bounces@xxxxxxxxxxx] On Behalf Of Raven McSmith
Sent: Friday, April 23, 2010 6:49 PM
To: EclipseLink User Discussions
Subject: Re: [eclipselink-users] Eclipselink retrieves old data, but data is already updated in the database. Where does it get the old data from?

Dear Tom,

this seems to work. Great. Thanks!

Raven

On Fri, Apr 23, 2010 at 2:49 PM, Tom Ware <tom.ware@xxxxxxxxxx> wrote:
> EclipseLink has a 2nd level cache.  Is it possible the objects you are
> reading are already in that cache?
>
> Try adding the query hint, eclipselink.refresh=true to your query:
>
> q1.setHint(eclipselink.refresh, true);
>
> -Tom
>
> Raven McSmith wrote:
>>
>> Hi,
>>
>> in my project I have to Eclipse RCP plugins. Both are configured to
>> use Eclipselink on one and the same database. Both get the same
>> credentials.
>> If the first plugin, showing some views to add data to the database,
>> is started it shows the data from the database and the operation
>> directly write to the database and I can see, with an 3rd party
>> database manager tool, that the changes are saved in the database.
>>
>> Then from my menu the second plugin is called. It will just read the
>> data and then show and do some visualisation with it, it shows data
>> which is old. All new added or modified objects from my first plugin
>> are not shown. I have to quit the program and restart it, and then my
>> second plugin also sees the changes.
>>
>> Since the database connection for my second plugin is established
>> after the first plugin flushed all data and closed the transaction, ..
>>
>> ...why does my second plugin not see the changes?
>>
>> my code is more or less:
>>
>> ...
>> private List<A> aList = new ArrayList<A>();
>>
>> public void loadData() {
>>
>> dbDriver = get...
>> dbUrl = get...
>> dbUser = get...
>> dbPass = get...
>>
>> if (dbUrl.contains("derby:")) setLocalDatabase(true);
>>
>> Map properties = new HashMap();
>> properties.put("javax.persistence.jdbc.driver", dbDriver);
>> properties.put("javax.persistence.jdbc.url", dbUrl);
>> properties.put("javax.persistence.jdbc.user", dbUser);
>> properties.put("javax.persistence.jdbc.password", dbPass);
>> try {
>>        factory = Persistence.createEntityManagerFactory(
>>                PERSISTENCE_UNIT_NAME, properties);
>> } catch (Exception e) {
>>        System.out.println(e);
>> }
>> em = factory.createEntityManager();
>>
>> em.clear();
>>
>> Query q1 = em.createQuery("SELECT m FROM A m ORDER BY m.position, m.name
>> ASC");
>>
>> aList.clear();
>> aList.addAll(q.getResultList());
>>
>> }
>>
>> Can you help and tell my what I am doing wrong? Why doesnt the second
>> plugin see the changes?
>>
>> Thanks
>>
>> Raven
>> _______________________________________________
>> 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


Back to the top