У меня есть общий репозиторий с методом с именем saveList ().Цель этого метода - взять список и сохранить его в виде «кусочков» из 500 объектов.К сожалению, я получаю «TransactionException: транзакция не была успешно запущена», когда я получаю коммит.
Все, что я видел, говорит о том, что это результат Spring Transaction Manager.К сожалению, для этого конкретного метода мне нужно вручную управлять транзакцией.
Соответствующий код ниже:
// from generic non-abstract repository
@Transactional
public void saveList(List<T> objectList) {
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
int i = 1;
for (T obj : objectList) {
session.save(obj);
//sessionFactory.getCurrentSession().save(obj);
i++;
if (i % 500 == 0) {
session.flush();
//sessionFactory.getCurrentSession().flush();
}
}
if (!tx.wasCommitted()) {
tx.commit();
}
//sessionFactory.getCurrentSession().getTransaction().commit();
}
Конфигурация из applicationContext.xml:
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
Любая помощь приветствуется.