Junit DirtiesContext 没有使用 JPA 回滚我的事务

Junit DirtiesContext is not rollbacking my transcation using JPA

我在我的回购 class 中创建了删除方法,并在 class 级别使用了 @Transactional,

当我调用 deletebyID 时,它会删除该 ID。在 Junit 中我确实使用了 DirtiesContext 它应该回滚事务,但是由于 @Transactional 在 class 级别,它减少了我的删除(它做了应该做的事情),

现在我的 juint 无法回滚该事务。

如何解决这个问题?

@Repository
@Transactional
public class CourseRepository {

@Autowired
EntityManager em;

public Course findById(Long id) {
    return em.find(Course.class, id);
}

public Course deleteById(Long id) {
    Course course= em.find(Course.class, id);
    em.remove(course);
    return course;
  }
}

在我的 Junit 中

@Autowired
CourseRepository courseRepo;
@Test
@DirtiesContext
public void deleteById_basicTest() {
    courseRepo.deleteById(100001L);
    assertNull(courseRepo.findById(100001L));
}

您可以为每个测试用例使用@Transactional。它将回滚事务。 有效。

@Test
@Transactional
public void deleteById_basicTest() {
    courseRepo.deleteById(100001L);
    assertNull(courseRepo.findById(100001L));
}