title: How to call @Transactional method from one service from other @Transactional method from other service
body: <p>I have:</p>
  
  <p>1) Service:</p>
  
  <pre><code>@Service("scanner")
  @Transactional
  public class Scanner
  {
      @Inject
      AnalyzerService analyzerService;
  
      @Transactional
      private void scan() {
          analyzerService.analyze();
      }
  }
  </code></pre>
  
  <p>2) Service:</p>
  
  <pre><code>@Service
  public class AnalyzerService
  {
      @Inject
      AnalyzerDao analyzerDao;
  
      @Transactional
      public void analyze() {
          List&lt;AnalyzerResult&gt; items;
          // code filling items list removed;
          save(items); 
      }
  
      @Transactional
      private void save(List&lt;SomeType&gt; items) {
          analyzerDao.save(items); // &lt;--- Why after call save items are not saved in DB?
      }
  }
  </code></pre>
  
  <p>3) Dao:</p>
  
  <pre><code>@Repository
  public class AnalyzerDao extends GenericDaoImpl&lt;AnalyzerResult&gt;
  {
      //all needed methods for find, edit, delete and save which works fine in other cases.
  }
  </code></pre>
  
  <p>Question:</p>
  
  <p>Why after call <code>analzyerDao.save(items)</code> DB is still empty? Is it problem with transaction some how? 
  When I invoke <code>flush()</code> method and <code>getSession().getTransaction().commit()</code> just after line <code>analyzerDao.save(items)</code> then records appearing in DB but exception is thrown:</p>
  
  <pre><code>Caused by: org.springframework.transaction.TransactionSystemException: Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: Transaction not successfully started
      at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:660)
      at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
      at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
      at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
      at com.sun.proxy.$Proxy44.execute(Unknown Source)
      at org.quartz.core.JobRunShell.run(JobRunShell.java:223)
      ... 1 more
  Caused by: org.hibernate.TransactionException: Transaction not successfully started
      at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:127)
      at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)
      ... 9 more
  </code></pre>
  
  <p>How should implementation be done to work 'save' method fine? 
  What should I do to save items just in line analyzerDao.save(items) and not only after first transaction will be finished?</p>