Как осуществить поиск через Repository?

У пользователя есть атрибутом Роль, по умолчанию TENANT, с помощью запроса задаем ему LANDLORD и в таблицу HOUSE он теперь добавляет квартиру с различными атрибутами: описание, цена, city_id и другие. Этот пользователь захотел снять с себя статус LANDLORD, удалить свои квартиры из нашей базы и снова стать просто TENANT, как мне квартирам, которые, если у него были - поставить status INACTIVE? Я только понял как ему роль присвоить, а как найти квартиры, которые ему принадлежали - не догадался. Мой вариант с поиском по id_landlord почему-то не сработал. Прикрепил фотографию того, какие есть атрибуты у House и User.

Заготовка кода выглядит так:

@PutMapping("/{id}")
    @PreAuthorize("hasAuthority('landlord:write')")
    public void TenantPostAdd(@PathVariable(value = "id") Long id) {
        User user = userRepository.findById(id).orElseThrow();
        user.setRole(Role.TENANT);
        House house = houseRepository.findById_landlord(id); - не работает
        house.setStatus(Status.INACTIVELY);
    }

HouseRepository:

@Repository
public interface HouseRepository extends JpaRepository<House, Long> {
    House findById_landlord(@Param("id_landlord") House house);
}

введите сюда описание изображения

FULL CODE.


Ответы (1 шт):

Автор решения: Blacit

Сам смог сделать, надеюсь, что достаточно корректно происходят действия. Пояснения: получил id, нашёл этого user'а, присвоил ему роль "TENANT", дальше нашёл дома, к котором он относится, выставил у них статус и всё сохранил. Правда сохранение не особо нравится, но на скорую руку именно так.

@PutMapping("/{id}")
    @PreAuthorize("hasAuthority('landlord:write')")
    public void landlordPostAdd(@PathVariable(value = "id") Long id) {
        User user = userRepository.findById(id).orElseThrow();
        user.setRole(Role.TENANT);
        Iterable<House> house = houseRepository.findById_landlord(id);
        for (House a : house) {
            a.setStatus(Status.INACTIVELY);
            userRepository.save(user);
        }
    }
→ Ссылка