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 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 

-- 
mit freundlichen Grüßen,
Michael Simons

OPTITOOL GmbH
Bruderwöhrdstr. 15b
93055 Regensburg
Tel: +49(0)941.595780
Fax: +49(0)941.595787


Back to the top