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,

when I call
  em.setFlushMode (FlushModeType.COMMIT);
the update is done - as expecetd - at commit.

- Michael

Michael Simons schrieb:
> 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