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?

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


Back to the top