内部交易没有回滚(Spring MVC)

时间:2014-10-24 17:02:11

标签: spring-mvc junit transactions

我有一个创建新事务的DAO类。我的JUnit测试有自己的事务,我已经设置为在执行测试后回滚。现在发生的事情是外部事务回滚但内部事务没有。

这是我的DAO类(BookDaoImpl),它创建了一个新事务。

@Component("bookDaoImpl")
@Transactional(propagation=Propagation.REQUIRES_NEW,rollbackFor=DatabaseAccessException.class) 
public class BookDaoImpl implements BookDao {
    ....
    ....
  }

这是我的JUnit测试类(BookDaoImplTest)。

   @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:com/shubham/spring/config/dao-context.xml"})
public class BookDaoImplTest {



    @Autowired
    private BookDao bookDao;

    @Test
    @Transactional
    @Rollback(true)
    public void test() {

    Book book=new Book();
    book.setAuthor("abc");
    book.setBookTitle("bookTitle");
    book.setCopiesAvailable(3);
    book.setImageName("abc.jpg");
    book.setPublisher("publisher");
try {
    bookDao.createBook(book);
} catch (DatabaseAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

       assertTrue("books greater than 0",bookDao.getAllBooks().size()>0);
    }

}

现在我希望内部事务也可以使用外部事务回滚,但它不会回滚。由于某些条件,我必须在dao层创建一个新事务(REQUIRES_NEW)。

建议我解决这个问题的方法。感谢。

0 个答案:

没有答案