В моем приложении Spring Boot, созданном с помощью JHipster (v6.0.1) Kotlin blueprint (v0.8.0), у меня есть следующий обработчик POST-запроса
@PostMapping("/book")
fun createBook(@RequestBody createBookVM: CreateBookVM): ResponseEntity<Book> {
val author = authorRepository.getOne(createBookVM.authorId)
val userLogin = SecurityUtils.getCurrentUserLogin().orElseThrow { RuntimeException("User not logged in") }
val user = userRepository.findOneByLogin(userLogin).orElseThrow { RuntimeException("IMPOSSIBLE: user does not exist in DB") }
val book= Book()
book.author = author // FIXME
book.user = user
log.debug("Author object with id : {}", author.id) // THIS WORKS
val result = bookRepository.save(book)
return ResponseEntity.created(URI("/api/books/" + result.id))
.headers(HeaderUtil.createEntityCreationAlert(applicationName, true, ENTITY_NAME, result.id.toString()))
.body(result)
}
Проблема в том, что author
не добавляется к book
(book.author
будет null
). Тем не менее, я могу получить доступ к значениям author
, как показано в операторе регистрации. Добавление user
к book
также работает нормально.
Полагаю, проблема в том, что authorRepository.getOne(createBookVM.authorId)
возвращает прокси-объект, а не экземпляр Author
, но я не знаю, как справиться с этой ситуацией.