Как осуществить поиск через 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);
}
Ответы (1 шт):
Сам смог сделать, надеюсь, что достаточно корректно происходят действия. Пояснения: получил 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);
}
}
