Сервис возвращает правильное значение, а REST MVC Controller - нет
У меня есть Entity Company у которой есть переменная boolean active. Я хочу, что бы мой метод контролера возвращал только Entity, у которых active=true. Для этого я написал метод сервиса:
public List<Company> getAll(int userId, boolean excludeNotActive) {
return excludeNotActive ? repository.getAllByUserIdActiveOnly(userId, SORT_BY_REGISTER_TIME)
: repository.getAllByUserId(userId, SORT_BY_REGISTER_TIME);
}
// repository
@Transactional(readOnly = true)
public interface CompanyRepository extends JpaRepository<Company, Integer> {
@Query("FROM Company l LEFT JOIN FETCH l.members m WHERE l.owner.id = ?1 OR m.user.id = ?1")
List<Company> getAllByUserId(int userId, Sort sort);
@Query("FROM Company c LEFT JOIN FETCH c.members m WHERE c.owner.id = ?1 OR m.user.id = ?1 AND c.active = true")
List<Company> getAllByUserIdActiveOnly(int userId, Sort sort);
}
И Junit тест, который проходит.
Затем я написал метод в контролере:
@GetMapping
public List<Company> getCompanies() {
int userId = authUserId();
log.info("Get all companies by user {}", userId);
return service.getAll(userId, true);
}
И точно такой-же Junit тест, только теперь, вместо вызова метода сервиса, я делаю запрос в контролер. Не работает, показывает все фирмы: и активные, и нет. Однако фильтрация по userId работает верно. Если проводить тесты вручную: делать запрос, к примеру, в браузере - картина та-же.