Java Spring JPA JUnit4测试查找实体未拾取使用与已删除实体相同的复合键创建的新实体

Java Spring JPA JUnit4测试查找实体未拾取使用与已删除实体相同的复合键创建的新实体,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我正在尝试为一种方法编写集成测试,其基本工作原理如下: @Autowired JpaRepositoryWrapperService service; @Transactional public void updateSelections(Integer userId, Integer... choiceIds) { service.deleteSelectionsByUserId(userId); for (Integer choiceId: choiceIds) { ser

我正在尝试为一种方法编写集成测试,其基本工作原理如下:

@Autowired
JpaRepositoryWrapperService service;

@Transactional
public void updateSelections(Integer userId, Integer... choiceIds) {
  service.deleteSelectionsByUserId(userId);
  for (Integer choiceId: choiceIds) {
    service.createSelection(userId, choiceId);
  }
}
验证删除以前所有选项的测试,通过。
验证添加任意数量的选项(之前没有选择)的测试通过。
验证保留一个或多个先前选择的测试失败

注:

  • SelectionEntity具有userId和choiceId的复合主键
  • Net新的SelectionEntity被创建-只有那些其组合键与已删除的组合键匹配的组合键才不会被重新创建
  • deleteSelectionsByUserId使用查询注释-@Query(“从SelectionEntity se删除,其中se.compositePrimaryKey.userId=?1”)
  • #3是很重要的,因为如果我更新该方法以使用本机jpa delete方法,并将这两个键都赋予它,测试就会通过
  • 当在我的应用程序中运行时,该方法按原样工作——只是不是从集成测试中运行