mientras se prueba una función DAO en la aplicación spring+hibernate, la reversión de datos no ocurre. Estoy tratando de hacer la reversión de un caso de prueba junit mediante la anotación @Rollback
configuración del administrador de transacciones:
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="emf" /> </bean>En mi código principal estoy usando hibernateTemplate() para hacer operaciones CRUD
código de prueba:
@Test @Transactional @Rollback(true) public void test_populateObject() throws Exception { // TransactionDefinition def = new DefaultTransactionDefinition(); // TransactionStatus status = transactionManager.getTransaction(def); manualObj= new ManualObj(); manualObj.setName("TestObj001"); manualObj.setRefId("TestObj001"); manualObj.setCallback("TestObj001"); m TestObject obj=orderService.createTestObject(manualObj); Assert.assertNotNull(obj); // transactionManager.rollback(status); }La reversión no elimina el objeto creado.
Entonces, ¿cuál podría ser la razón por la que @Rollback no está sucediendo?
Edición 1:
Estoy usando Spring Data JPA y el acceso a datos basado en hibernateTemplate en la misma aplicación. Ambos usan el mismo administrador de transacciones especificado como la configuración de bean anterior.
¿Configuró su prueba para usar la configuración xml y especificó SpringJUnit4ClassRunner para ejecutar su prueba? Puedes hacerlo así:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"testContext.xml"}) @Transactional public class YourTest{ ... }