@ Transactional olarak işaretlenmiş bir yöntemim var. Çeşitli işlevlerden oluşur, bunlardan biri JDBC ve ikincisi - Hazırda Beklet, üçüncü - JDBC. Sorun, Hazırda Beklet işlevi tarafından yapılan değişikliklerin, son işlevlerde JDBC ile birlikte görünmemesidir.Bir işlemde Hibernate ve JDBC
<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>
myDataSource fasulye kod kullanılır:
@Transactional
void update() {
jdbcUpdate1();
hibernateupdate1();
jdbcUpdate2(); // results of hibernateupdate1() are not visible here
}
Tüm fonksiyonlar aynı veri kaynağı kullanmak üzere yapılandırılır. myDataSource.getConnection() JDBC işlevlerde bağlantıları ile çalışmak için kullanılan ve
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
...
}
});
hazırda fonksiyonu kullanılır. Teşekkürler.
Google'dan buraya gelenler için, bu sorunla ilgili çözümüm. Hibernate flush işlevinin sonunda session.flush() ekledim. Bundan sonra, yazma sonucu sonraki jdbc okuma fonksiyonunda (aynı işlemde) mevcuttur. – alex543