Hibernate и JDBC в одной транзакции

У меня есть метод, помеченный как @Transactional. Он состоит из нескольких функций, одна из которых использует JDBC, вторая - Hibernate, третья - JDBC. Проблема в том, что изменения, сделанные функцией Hibernate, не видны в последних функциях, которые работают с JDBC.

@Transactional
void update() {
  jdbcUpdate1();
  hibernateupdate1();
  jdbcUpdate2(); // results of hibernateupdate1() are not visible here    
}

Все функции настроены на использование одного и того же источника данных:

<bean id="myDataSource" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
        <property name="targetDataSource" ref="targetDataSource"/>
    </bean>

    <bean id="targetDataSource" class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close" lazy-init="true" scope="singleton">
       <!-- settings here -->
    </bean>

bean myDataSource используется в коде. myDataSource.getConnection () используется для работы с соединениями в функциях jdbc, а

getHibernateTemplate().execute(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException, SQLException {
               ... 
            }
        });

используется в функции гибернации. Спасибо.

9
задан alex543 11 November 2010 в 10:00
поделиться