Я новичок в Spring и поэтому не очень понимаю почему без танцев с бубнами я не могу просто взять и получить из таблицы объект по его id...
Для работы с базой данных я создал
public interface TableRepository extends JpaRepository<User,Long>, JpaSpecificationExecutor
{ ... }
В основном классе при помощи TableRepository я могу получить список всех элементов из базы данных
List<User> userList = (List<User>) tableRepository.findAll();
for (User us : userList)
{
System.out.println(us.toString());
}
Со всеми этими элементами я могу работать как с объектами и делать с ними все что описано в классе-сущности
Когда я пытаюсь вызвать
User user = (User) tableRepository.findById(10L);
Intellij Idea говорит, что не верная запись и исправляет на
Optional<User> user = tableRepository.findById(10L);
В результате этого я не могу работать с user как с экземпляром класса-сущности. Не понятно на что он ссылается. Нигде толком не описано что такое Optional.
Я могу сам составить запрос, но здесь же есть готовые методы
Как можно просто получить объект по id? Ну или как работать с Optional? Спасибо за любую помощь
Вы наследуете интерфейс от JpaRepository там уже реализованы некоторые методы работы с сущностями в том числе и поиск по id; Благодаря дженерикам <User,Long>
Spring понимает что какого типа у него идентификатор и объект какого типа он должен вернуть, поэтому в репозитории метод поиска по id писать не нужно.
@Repository
public interface UserRepository extends JpaRepository<User,Long>{
}
Прописываете в сервисе внедрение объекта репозитория с помощью аннотации @Autowired
, теперь можно обращаться к методам репозитория
@Service
public class UserService{
@Autowired
private UserRepository repo;
public User getUser(Long id){
return repo.getOne(id);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В LinkedHashSet есть хедер и там итератор по проходит по связному спискуНо в HashSet нет связного списка
Только начал изучать принципы "ООП"Хотел сделать программу, которая считывает символы, переводит их в смайликовый формат
Проблема возникла со словами после знака присвоения