title: SELECT INTO command not allowed within multi-statement transaction in Hibernate for Sybase DB
body: <p>I was new to hibernate and trying to execute an procedure from a Java file using hibernate to a Sybase DB. While i am trying to run the application i am getting an error like below</p>
  
  <p><strong>Stored procedure 'dbo.p_chklist_test' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode.</strong></p>
  
  <p>I have checked in few forums and set the mode as "Any mode" by running below command.
  sp_procxmode p_chklist_test, "anymode"</p>
  
  <p>Also i have set the Auto Commit as False in hibernate. </p>
  
  <p>Now i am getting a different error like below</p>
  
  <pre><code>Caused by: org.hibernate.exception.GenericJDBCException: could not execute native bulk manipulation query
      at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
      at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
      at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
      at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:198)
      at org.hibernate.impl.SessionImpl.executeNativeUpdate(SessionImpl.java:1191)
      at org.hibernate.impl.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:357)
      at com.lcit_release.server.dao.ReleaseItemDao.searchRecordsNew(ReleaseItemDao.java:198)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
      at $Proxy8.searchRecordsNew(Unknown Source)
      at com.lcit_release.server.logic.ReleaseItemLogic.searchExisting(ReleaseItemLogic.java:147)
      at com.lcit_release.server.adapter.ReleaseItemLogicAdapter.search(ReleaseItemLogicAdapter.java:79)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
      ... 41 more
  
  
  **Caused by: com.sybase.jdbc3.jdbc.SybSQLException: SELECT INTO command not allowed within multi-statement transaction.**
  
      at com.sybase.jdbc3.tds.Tds.a(Unknown Source)
      at com.sybase.jdbc3.tds.Tds.nextResult(Unknown Source)
      at com.sybase.jdbc3.jdbc.ResultGetter.nextResult(Unknown Source)
      at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source)
      at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source)
      at com.sybase.jdbc3.jdbc.SybStatement.updateLoop(Unknown Source)
      at com.sybase.jdbc3.jdbc.SybStatement.executeUpdate(Unknown Source)
      at com.sybase.jdbc3.jdbc.SybPreparedStatement.executeUpdate(Unknown Source)
      at msjava.tools.db.jdbc3.MSDBPreparedStatementImpl.executeUpdate(MSDBPreparedStatementImpl.java:315)
      at msjava.tools.db.jdbc3.MSDBPreparedStatement.executeUpdate(MSDBPreparedStatement.java:78)
      at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:189)
      ... 62 more
  </code></pre>
  
  <p>I have check few sites for the error <strong>SELECT INTO command not allowed within multi-statement transaction</strong> and set the parameter <strong>"ServerInitiatedTransactions"</strong> as false in the configuration xml</p>
  
  <pre><code>**&lt;ConnectProperties&gt;
      &lt;Property name="ServerInitiatedTransactions"&gt;false&lt;/Property&gt;
  &lt;/ConnectProperties&gt;**  
  </code></pre>
  
  <p>But this even dint resolve the issue and i am getting the same error. Can someone please help me on this. </p>
  
  <p><strong>My Code:</strong></p>
  
  <pre><code> String sql3 ="exec dbo.p_chklist_test";
           System.out.println("sql 3 is "+sql3);
  
              Query query = sessionFactory.getCurrentSession().createSQLQuery(sql3);
  
  
               sessionFactory.getCurrentSession().connection().setAutoCommit(false);
  
  
  
           query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
  
  
           listRelItem = query.list();
  </code></pre>
  
  <p>Thanks in Advance!</p>