Well I'm not able to get a test "working". :-( In the JUnit test only the changed child's version is increased as it should be. The main difference is that in my test I'm using resource-local transaction type with Derby instead of JTA and Oracle. OpenJPA properties in the persistence.xml files are the same.
What I do NOT see in my test are those strange "batching prepstmnt" update statements in the logs. I wonder what JPA is doing here. It looks like JPA is stockpiling update statements for later usage. And what exactly are those "executing batch prepstmnt" for? As you can see JPA is setting the MUT_VERSION of all children to 28 but only child 328241 has actually changed the MUT_USER field: openjpa.jdbc.JDBC: Trace: The batch limit is set to 100. openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 2077588437 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328238, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 2077588437 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328239, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 2077588437 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328240, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> executing batch prepstmnt 2077588437 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328240, (int) 27] openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update success count 3 openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> executing prepstmnt 628303219 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_USER = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (String) JOHN, (int) 28, (long) 13260, (long) 328241, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328242, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328243, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328244, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328245, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328246, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328247, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328232, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328233, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328234, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328235, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328236, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> batching prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328237, (int) 27] openjpa.jdbc.SQL: Trace: <t 1494112526, conn 1933144889> executing batch prepstmnt 904345063 UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ? [params=(Timestamp) 2011-08-04 15:36:37.496, (int) 28, (long) 13260, (long) 328237, (int) 27] openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update success count 12 openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. openjpa.jdbc.JDBC: Trace: ExecuteBatch command returns update count -2 for statement UPDATE CHILD SET MUT_TSTAMP = ?, MUT_VERSION = ?, PARENT_ID = ? WHERE ID = ? AND CHILD.MUT_VERSION = ?. -- View this message in context: http://openjpa.208410.n2.nabble.com/Version-of-all-children-is-incremented-in-OneToMany-when-merging-parent-entity-tp6645128p6652752.html Sent from the OpenJPA Users mailing list archive at Nabble.com.