Не существует официального способа сделать его более кратким, насколько мне известно, но вы можете создать функцию расширения на JpaRepository
, например:
inline fun <reified T : Any, ID: Serializable> JpaRepository<T, ID>.update(id: ID, modify: T.() -> Unit) = findOne(id)?.let {
modify(it)
saveAndFlush(it)
} ?: throw NoSuchElementException("There is no ${T::class.simpleName} with id $id!")
, и использовать ее следующим образом:
userRepository.update(1L) {
firstName = "Jon"
lastName = "Doe"
}
Это сделает сайт вызовов действительно чистым и лаконичным.
update
может, конечно, вернуть null
вместо того, чтобы выдавать исключение.Это зависит от вашего варианта использования.
Если вам интересно, почему я сразу спросил и ответил на этот вопрос, посмотрите здесь .