Я думаю, вы не сохраняете хобби-сущность перед вызовом userRepository.findAll()
.
Если вы создаете отношения между сущностями, вам нужно сохранить все зависимые сущности до сохранения и поиска в глобальной сущности.
Если вы сохраняете сущность с NULL в зависимых полях, они не выдают исключение.В вашем случае вы сохраняете пустой список, но гибернацию не можете сохранить, потому что он проверяет FK и не находит это хобби.
Вы можете попробовать сохранить пользователя с NULL или с существующим в хобби базы данных.Вот так:
List<Hobby> hobbies = hobbyRepository.findAll();
user.getHobbies().addAll(hobbies); // null pointer exception
userRepository.save(user);
userRepository.findAll();
Я не понимаю, почему ваш репозиторий позволяет сохранять.Я использую postgres, и интерфейс расширяется в JpaRepository, и они выдают исключение, если я сохраняю пользователя с пустым списком хобби.
Я пробовал:
Hobby h = new Hobby();
h.setDesc("Golf");
hobbyRepository.save(h);
List<Hobby> hobbies = hobbyRepository.findAll();
Persona p = new Persona();
p.setNome("Giacomo");
p.setHobbies(new ArrayList<>());
p.getHobbies().addAll(hobbies);
personaRepository.save(p);
List<Persona> persone = personaRepository.findAll();
List<Hobby> hobby = hobbyRepository.findAll();
Не работает .. МожетВы сделали рабочий пример, похожий на этот ??Я буду признателен за это, потому что я не могу понять, где ошибка .. PS Если я поставлю:
@ManyToMany(fetch = FetchType.EAGER)
Это работает .. но я не хочу ставить это !!Должен работать со значениями по умолчанию.