Issue Type: Bug Bug
Affects Versions: 3.6.10
Assignee: Unassigned
Components: core
Created: 23/Feb/13 12:30 AM
Description:

When I get a WRITE lock on an entity and do flush just before the end of a method, I expect no further SQL statements to be executed.
But it looks like WRITE lock code registers synchronization on before completion, which does

update t set version=? where id=? and version=?

This is not expected.
My thinking is that write lock should increase version number only.

Here's the stacktrace:

at org.hibernate.jdbc.util.SQLStatementLogger.logStatement(SQLStatementLogger.java:107)
	  at org.hibernate.jdbc.AbstractBatcher.log(AbstractBatcher.java:444)
	  at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:511)
	  at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:116)
	  at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:109)
	  at org.hibernate.persister.entity.AbstractEntityPersister.forceVersionIncrement(AbstractEntityPersister.java:1306)
	  at org.hibernate.action.EntityIncrementVersionProcess.doBeforeTransactionCompletion(EntityIncrementVersionProcess.java:51)
	  at org.hibernate.engine.ActionQueue$BeforeTransactionCompletionProcessQueue.beforeTransactionCompletion(ActionQueue.java:543)
	  at org.hibernate.engine.ActionQueue.beforeTransactionCompletion(ActionQueue.java:216)
	  at org.hibernate.impl.SessionImpl.beforeTransactionCompletion(SessionImpl.java:571)
	  at org.hibernate.jdbc.JDBCContext.beforeTransactionCompletion(JDBCContext.java:250)
	  at org.hibernate.transaction.synchronization.CallbackCoordinator.beforeCompletion(CallbackCoordinator.java:125)
	  at org.hibernate.transaction.synchronization.HibernateSynchronizationImpl.beforeCompletion(HibernateSynchronizationImpl.java:51)
	  at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:435)
	  at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:855)
	  at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5136)
	  at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4915)
	  at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2045)
	  at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1994)
	  at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222)
	  at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:89)
Project: Hibernate ORM
Priority: Major Major
Reporter: Rafal Rusin
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira