Обновление спящего объекта с помощью CrudRepository - PullRequest
0 голосов
/ 29 января 2019

В настоящее время я пишу свое первое весеннее загрузочное приложение Kotlin и пытаюсь создать API отдыха с сохранением JPA.Основы идут хорошо, но я борюсь с обновлением модели на конечной точке патча (@patchMapping).

Я хочу придерживаться надлежащих стандартов отдыха и по этой причине я поражаю конечную точку патча с помощью @PatchMapping("/company/{id}").

Я хотел бы иметь возможность вызывать CrudRepository таким образом, как это.

  @PatchMapping("/company/{id}")
  fun update(@PathVariable id: Long, @RequestBody updateRequest: Company) : Company {
    return repository.update(updateRequest, id)
  }

но похоже, что весенний способ сделать это - передать идентификатор объекта, который вы собираетесь обновить, в requestBody?Например,

repository.save(updateRequest)

, который затем автоматически объединяет объект.Но это противоречит любому здравому соглашению об отдыхе ...

Есть ли интегрированное решение для того, чего я хочу достичь?Я хотел бы воздержаться от написания своей собственной логики, так как надеялся, что весна получит эту функциональность.

1 Ответ

0 голосов
/ 29 января 2019

Вам нужно что-то подобное?

 @RestController
 class Controller(private val service: CompanyService) {
   @PatchMapping("/company/{id}")
   fun update(@PathVariable id: Long, @RequestBody company: Company): Company {
     return service.updateCompany(company, id)
   }
 }

 @Service
 class CompanyService (private val repository: CompanyRepository) {
   @Transactional
   fun updateCompany(company: Company, id: Long): Company {
     val companyToUpdate = repository.findOne(id)
     companyToUpdate.setSomething(company.getSomething)
     raturn companyToUpdate;
   }
 }

 interface CompanyRepository : CrudRepository<Company, Long>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...