public interface UserRepository extends JPARepository<User, Integer> {
@Modifying
@Query("update User u set u.active = false where u.userId = :userId")
void updateEmployee(Integer userId);
.......
}
字符串
我是新的单元测试.所以我试图写测试用例为JPQL使用DataJpaTest为上述存储库方法.每次我的测试用例失败时,我用下面的方法来测试也我不能确定我犯了错误.如果有人有一个解决方案,这将是真的对我有帮助.提前感谢.!
在测试用例中,我写道,字段active不会更新,并且值也为null。
@Test
void updateUserRecord(){
User user = new User();
user.setUserId(1);
userRepository.save(user);
userRepository.updateEmployee(user.getUserId());
assertFalse(user.getActive());
}
型
1条答案
按热度按时间qybjjes11#
当使用@Modifying,@Query注解时,JPA直接更新数据库。不更新持久化上下文。所以测试代码中的用户示例没有更新。您必须从数据库重新获取。
我认为使用实体管理器作为助手会使你的测试代码更好。
1.用实体管理器准备数据。之后刷新和清除。
flush
方法将持久上下文中的实体更改反映到数据库。clear
方法清除持久上下文。1.更新用户数据
1.再次从数据库中查找结果。
字符串