Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Ignore Cache on Query

Hello Michael,

The "eclipselink.flush" property is a query hint. You will need to use "eclipselink.persistence-context.flush-mode" to set the property in persistence.xml.

Best Regards
Chris

Michael Simons wrote:
Hello James,

The eclipselink.flush option does not work like expected.
In the persistence.xml, I specified:
      <property name="eclipselink.flush" value="Commit" />
But this seems to be ignored, because I get the following exception, on a query before anything
was committed:

SCHWERWIEGEND: Exception [EclipseLink-4002] (Eclipse Persistence Services -
1.2.0.v20091016-r5565): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Column set to default
value; NULL supplied to NOT NULL column 'tour_id' at row 1
Error Code: 0
Call: UPDATE tour_position SET tour_id = ?, jdo_version = ? WHERE ((tour_position_id = ?) AND
(jdo_version = ?))
	bind => [null, 7, 96117, 6]
Query: UpdateObjectQuery(net.uniopt.domain.ot.OrderStop@17775)
javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence
Services - 1.2.0.v20091016-r5565): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Column set to default
value; NULL supplied to NOT NULL column 'tour_id' at row 1
Error Code: 0
Call: UPDATE tour_position SET tour_id = ?, jdo_version = ? WHERE ((tour_position_id = ?) AND
(jdo_version = ?))
	bind => [null, 7, 96117, 6]
Query: UpdateObjectQuery(net.uniopt.domain.ot.OrderStop@17775)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:612)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.performPreQueryFlush(EJBQueryImpl.java:1153)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:371)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:636)
	at de.optitool.biz.tp.StockManager.queryFirstAndRecentDetection(StockManager.java:786)
	at de.optitool.biz.tp.StockManager.retrieveRemainingContingentStock(StockManager.java:359)
	at de.optitool.biz.tp.StockManager.tell(StockManager.java:344)
	at de.optitool.biz.tp.ReservationManager.bookOnAbstractCont(ReservationManager.java:1064)
	at de.optitool.biz.tp.ReservationManager.bookOnCheapestProduct(ReservationManager.java:1318)
	at de.optitool.biz.tp.ReservationManager.reserveStocks(ReservationManager.java:542)
	at de.optitool.biz.tp.ReservationManager.reserveStocks(ReservationManager.java:466)
	at de.optitool.biz.tp.ResAllocController.processTour(ResAllocController.java:217)
	at de.optitool.biz.tp.ResAllocController.runTask(ResAllocController.java:141)
	at de.optitool.biz.tp.ResAllocController.runOnEntities(ResAllocController.java:78)
	at de.optitool.biz.tp.TourModificationManager.runControllers(TourModificationManager.java:595)
	at net.uniopt.ot.action.UnplanOrders.runOnEntities(UnplanOrders.java:70)
	at de.optitool.action.UserRestrictedAction.run(UserRestrictedAction.java:134)
	at net.uniopt.ot.action.TaskAction.run(TaskAction.java:124)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
	at
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
	at org.eclipse.jface.window.Window.open(Window.java:801)
	at net.uniopt.ot.gui.MainWindow.open(MainWindow.java:566)
	at net.uniopt.app.Application.processEventLoop(Application.java:514)
	at net.uniopt.app.Application.run(Application.java:214)
	at net.uniopt.ot.Main.main(Main.java:49)

Any hints what might be wrong here are appreciated.

- Michael

James Sutherland schrieb:
Do you want to ignore the cache, or not do the flush?

To disable flushing, you can either set the EntityManager flushMode, or
persistence unit property or use the query hint,

"eclipselink.flush"="Commit"

This will prevent to auto flush.

If you truly wish to ignore the cache, and build "detached" objects directly
from the database, you can use,

"eclipselink.maintain-cache"="false"

The hint, QueryHints.CACHE_USAGE, CacheUsage.DoNotCheckCache, just means
that a query will not check the cache before accessing the database, the
query will still flush, and will still use the cache and persistence context
when building the objects from the database result.


Michael Simons wrote:
Hello,

How can I tell EL to ignore the cache when executing a query, so there's
no flush done before
executing the query?
Is this done by query.addHint(QueryHints.CACHE_USAGE,
CacheUsage.DoNotCheckCache) ?

- michael


-----
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland http://www.eclipse.org/eclipselink/
 EclipseLink ,  http://www.oracle.com/technology/products/ias/toplink/
TopLink Wiki: http://wiki.eclipse.org/EclipseLink EclipseLink , http://wiki.oracle.com/page/TopLink TopLink Forums: http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink , http://www.nabble.com/EclipseLink-f26430.html EclipseLink Book: http://en.wikibooks.org/wiki/Java_Persistence Java Persistence



Back to the top