Spring @Transactional: информация отката сообщается, но фактически не выполняется - PullRequest
1 голос
/ 08 апреля 2011

Я прокомментировал свои тестовые классы следующим образом:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:WebContent/WEB-INF/applicationContext.xml", "file:WebContent/WEB-INF/context-aspects.xml"})
@Transactional
public class MyTest {

}

Однако при выполнении тестов тестовая база данных внезапно заполняется значениями, хотя @Transactional включен, и я могу прочитать следующее в журнале:

INFO: Began transaction (4): transaction manager [org.springframework.orm.hibernate3.HibernateTransactionManager@669aa3f3]; rollback [true]
07.04.2011 23:57:33 org.springframework.test.context.transaction.TransactionalTestExecutionListener endTransaction
INFO: Rolled back transaction after test execution for test context ...

Есть идеи, почему не выполняется реальный откат после контрольного примера?

Обновление: Если я использую HSQLDB, у меня нет этих проблем - так это проблема mysql?

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Я мог бы наконец решить проблему. Hibernate генерировал таблицы MyISAM, которые, очевидно, не поддерживают транзакции. Это было связано с неверно настроенным спящим диалектом. я использовал org.hibernate.dialect.MySQL5Dialect, но требуется org.hibernate.dialect.MySQL5InnoDBDialect.

1 голос
/ 11 апреля 2011

Обновление: если я использую HSQLDB, у меня нет этих проблем - так это проблема mysql?

Да, вы правы.

Убедитесь, что вы используете правильный диалект (при использовании Hibernate: org.hibernate.dialect.MySQL5InnoDBDialect) и, возможно, вам следует отслеживать операторы, отправленные в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...