Это объявление в вашем WalletRepository
интерфейсе недопустимо для Spring:
Long createWallet(Long id, String name);
Как вы хотите, чтобы Spring угадал, какой метод createWallet()
предназначен для создания и сохранения сущности Wallet
с Long id
и String name
?
Фактически методы, которые вы объявляете в своем интерфейсе WalletRepository
, являются поисковыми методами, которые основаны на соглашениях об именах, которые позволяют Spring создавать запросы для вас. И create
не упоминается в документации Spring Data:
4.4.2. Создание запроса
Механизм префиксов полос find…By
, read…By
, query…By
,
count…By
и get…By
из метода и начинает анализ остальной части
это.
Поскольку Spring не распознает create
, он, вероятно, пытается определить createWallet
как поле сущности. Принимая во внимание сообщение:
Не найдено свойство createWallet для типа Wallet!
Чтобы сохранить сущность, используйте метод, указанный в JpaRepository
:
<S extends T> S save(S entity);
который для вашего хранилища будет выведен как:
Wallet save(Wallet entity);
Адаптируйте свой клиентский код для создания экземпляра Wallet
и передачи его в save()
.
Например:
@RequestMapping(value="/wallets", method=RequestMethod.POST)
public Wallet save(@RequestBody Wallet wallet) {
User boundUser = wallet.getUser();
return walletRepository.save(wallet);
}