0
我不明白爲什麼Spring @Transactional
測試方法Hibernate沒有回滾在@Before
中所做的更改?有information,@Before
和@Test
在一個事務中被調用。所有上下文都可以考慮配置。用`.createSQLQuery`截斷後彈簧/休眠不回滾事務
@Test
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional(defaultRollback = true, transactionManager = "transactionManager")
public class TestClass {
@Autowired
private SessionFactory sessionFactory;
@Autowired
private EntityDao entityDao;
@Before
public void before() {
// create arbitrary entity
Entity one = Utils.createEntity();
// save with HibernateDao to table_1
entityDao.save(one);
}
@Test
public void test() {
sessionFactory.getCurrentSession().createSQLQuery("TRUNCATE table_2").executeUpdate();
}
}
沒有createSQLQuery().executeUpdate
如需要@Before
所有的改變都rollbacked。
哪些DBMS您使用的?並非所有人都支持事務TRUNCATE –
我使用的是mysql,據說['Truncate操作導致隱式提交,因此無法回滾](https://dev.mysql.com/doc/refman/ 5.7/EN /截短table.html)。你能通過手勢來解釋爲什麼有些dbms不支持事務截斷嗎?我想知道在這種情況下會發生什麼。 –