Win a copy of Cross-Platform Desktop Applications: Using Node, Electron, and NW.js this week in the JavaScript forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic

spring Transaction mode changed from FlushMode.COMMIT/AUTO to FlushMode.NEVER/MANUAL on Excption  RSS feed

samuel soundra rajan
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
We are using Spring declarative Trsnaction in service layer with Hibernate Transaction Manager and OpenSessionInViewFilter .


<bean id="integrationServiceTransactionInterceptor" class="org.springframework.transaction.interceptor .TransactionInterceptor">
<property name="transactionManager">
<ref bean="transactionManager"/>
<property name="transactionAttributeSource">
PermissionService.*=PROPAGATION_REQUIRED,timeout_$ {transaction.timeout.update}
PermissionService.find*=PROPAGATION_REQUIRED,readO nly,timeout_${transaction.timeout.readonly}

<bean id="restartTransactionInterceptor" class="com.novacitynets.pavo.common.util.RestartTr ansactionAdviser">

Also we are using RestartTransactionAdviser intercertor to restart the transaction if deadLock or lock Exception occured.

sample code:

public Object invoke(MethodInvocation invocation) throws Throwable {
return restart(invocation, 1);

private Object restart(MethodInvocation invocation, int attempt)
throws Throwable {
Object rval = null;
try {
rval = invocation.proceed();
} catch (Exception e) {
return restart(invocation, attempt);

return rval;

But while restarting the transaction the mode changed from FlushMode.COMMIT/AUTO to FlushMode.NEVER/MANUAL automaically
so it is giving Exception org.springframework.dao.InvalidDataAccessApiUsageE xception: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition on completing the transaction
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!