How to enable batch inserts/updates on OracleDB

48 views
Skip to first unread message

Bruno Leite

unread,
Jul 21, 2014, 12:59:52 PM7/21/14
to play-fr...@googlegroups.com
Hi all,

Does anyone know a way to enable batch inserts on a OracleDB while using Play?
Every time I try to use batch inserts I get this error:

play.api.Application$$anon$1: Execution exception[[OptimisticLockException: Data has changed. updated [-2] rows]]
at play.api.Application$class.handleError(Application.scala:293) ~[play_2.10.jar:2.2.3]
at play.api.DefaultApplication.handleError(Application.scala:399) [play_2.10.jar:2.2.3]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:264) [play_2.10.jar:2.2.3]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:264) [play_2.10.jar:2.2.3]
at scala.Option.map(Option.scala:145) [scala-library.jar:na]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3.applyOrElse(PlayDefaultUpstreamHandler.scala:264) [play_2.10.jar:2.2.3]
Caused by: javax.persistence.OptimisticLockException: Data has changed. updated [-2] rows
at com.avaje.ebeaninternal.server.core.PersistRequestBean.checkRowCount(PersistRequestBean.java:512) ~[avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.persist.BatchedPstmt.executeAndCheckRowCounts(BatchedPstmt.java:136) ~[avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.persist.BatchedPstmt.executeBatch(BatchedPstmt.java:88) ~[avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.persist.BatchedPstmtHolder.flush(BatchedPstmtHolder.java:100) ~[avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.persist.BatchControl.flushPstmtHolder(BatchControl.java:207) ~[avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.persist.BatchControl.flush(BatchControl.java:246) ~[avaje-ebeanorm.jar:na]

I'm assuming that this happens because OracleDB returns -2 (SUCCESS_NO_INFO) as result for every batch update/insert (as explained here) and not the actual number of rows that were inserted/updated.

Any ideas on how to make this work?

Bruno Leite

unread,
Jul 24, 2014, 9:45:14 AM7/24/14
to play-fr...@googlegroups.com
Is anyone else out there using Play + Oracle DB (hope I'm not the only one... :S) that could give some feedback or even confirm if this is reproducible?

--
Bruno Leite

On Monday, July 21, 2014 5:59:52 PM UTC+1, Bruno Leite wrote:
Hi all,

Does anyone know a way to enable batch inserts on a OracleDB while using Play?
Every time I try to use batch inserts I get this error:

play.api.Application$$anon$1: Execution exception[[OptimisticLockException: Data has changed. updated [-2] rows]]
at play.api.Application$class.handleError(Application.scala:293) ~[play_2.10.jar:2.2.3]
at play.api.DefaultApplication.handleError(Application.scala:399) [play_2.10.jar:2.2.3]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse2.23€ ($3.).apply(PlayDefaultUpstreamHandler.scala:264) [play_2.10.jar:2.2.3]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse2.23€ ($3.).apply(PlayDefaultUpstreamHandler.scala:264) [play_2.10.jar:2.2.3]

at scala.Option.map(Option.scala:145) [scala-library.jar:na]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun2.23€ ($3.).applyOrElse(PlayDefaultUpstreamHandler.scala:264) [play_2.10.jar:2.2.3]

Caused by: javax.persistence.OptimisticLockException: Data has changed. updated [-2] rows
at com.avaje.ebeaninternal.server.core.PersistRequestBean.checkRowCount(PersistRequestBean.java:512) ~[avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.persist.BatchedPstmt.executeAndCheckRowCounts(BatchedPstmt.java:136) ~[avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.persist.BatchedPstmt.executeBatch(BatchedPstmt.java:88) ~[avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.persist.BatchedPstmtHolder.flush(BatchedPstmtHolder.java:100) ~[avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.persist.BatchControl.flushPstmtHolder(BatchControl.java:207) ~[avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.persist.BatchControl.flush(BatchControl.java:246) ~[avaje-ebeanorm.jar:na]

zhang meng

unread,
May 18, 2016, 4:04:00 AM5/18/16
to play-framework
Do u find some method to solve it ? 

在 2014年7月24日星期四 UTC+8下午9:45:14,Bruno Leite写道:

Ruchi Sahay

unread,
Dec 7, 2017, 3:53:50 PM12/7/17
to Play Framework
Did you find a way to solve this?

I am also getting same error while inserting in batches into Oracle db using Ebean.

Thanks,
Ruchi
Reply all
Reply to author
Forward
0 new messages