Я стараюсь, чтобы покрыть мой Repository
код с junit
тестов, но неожиданно я столкнулся со следующей проблемой:Spring Data: Метод с аннотацией @Query не работает, как ожидалось
@Test
@Transactional
public void shoudDeactivateAll(){
/*get all Entities from DB*/
List<SomeEntity> someEntities = someEntityRepository.findAll();
/*for each Entity set 1 for field active*/
someEntities.forEach(entity ->
{entity.setActive(1);
/*save changes*/
SomeEntityRepository.save(entity);});
/*call service, which walks through the whole rows and updates "Active" field to 0.*/
unActiveService.makeAllUnactive();
/*get all Entities again
List<SomeEntity> someEntities = SomeEntityRepository.findAll();
/*check that all Entities now have active =0*/
someEntities.forEach(entity -> {AssertEquals(0, entity.getActive());});
}
где: makeAllUnactive()
метод является просто @Query
:
@Modifying
@Query(value = "update SomeEntity e set v.active=0 where v.active =1")
public void makeAllUnactive();
А: someEntityRepository
расширяет JpaRepository
Этот метод испытания возврата AssertionError
: Expected 0 but was 1.
это означает, что makeAllUnactive
не измените статус Entitites ИЛИ сделал chanches, но они невидимы.
Не могли бы вы помочь мне понять, где «пробел» в моем коде?
о, 'v.active' мои опечатки. в коде: «e.active» игнорировать его :) – user471011