Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 内部事务未回滚(Spring MVC)_Spring Mvc_Junit_Transactions - Fatal编程技术网

Spring mvc 内部事务未回滚(Spring MVC)

Spring mvc 内部事务未回滚(Spring MVC),spring-mvc,junit,transactions,Spring Mvc,Junit,Transactions,我有一个创建新事务的DAO类。我的JUnit测试有自己的事务,我已将其设置为在执行测试后回滚。现在发生的是外部事务回滚,而内部事务没有回滚 这是我的DAO类(BookDaoImpl),它创建了一个新事务 @Component("bookDaoImpl") @Transactional(propagation=Propagation.REQUIRES_NEW,rollbackFor=DatabaseAccessException.class) public class BookDaoImpl i

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

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

@Component("bookDaoImpl")
@Transactional(propagation=Propagation.REQUIRES_NEW,rollbackFor=DatabaseAccessException.class) 
public class BookDaoImpl implements BookDao {
    ....
    ....
  }
这是我的JUnit测试类(BookDaoImplTest)

现在我希望内部事务与外部事务一起回滚,但它没有回滚。由于某些条件,我必须在dao层创建一个新事务(REQUIRES_new)


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

您认为测试用例是事务性的原因是什么?我希望测试的效果能够在数据库上回滚,这就是为什么要在事务中执行它们。
   @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);
    }

}