Идиоматический способ обновления репозитория в Котлине - PullRequest
0 голосов
/ 28 ноября 2018

Я использую Kotlin с моим приложением весенней загрузки, и я использую Spring-JPA.Я определил свои сущности как таковые

@Entity
@Table(name = "customer")
data class Customer(

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long? = null,

    @NotNull
    @Size(max = 255)
    @Column
    val firstName: String,

    @NotNull
    @Size(max = 255)
    @Column
    val lastName: String,

    @NotNull
    @Size(max = 255)
    @Column
    val email: String,

    @NotNull
    @Temporal(TemporalType.TIMESTAMP)
    val createdAt: Date,

    @Temporal(TemporalType.TIMESTAMP)
    val updatedAt: Date? = null
)

@Repository
interface CustomerRepository : CrudRepository<Customer, Long> {
   fun findById(id: Long): Customer
}

@Service
class MyService(private val repository: CustomerRepository) {


   fun update(id: Long, firstName: String, lastName: String, email: String):Customer {
       val customer = repository.findById(id)
       return repository.save(customer.copy(firstName=firstName, lastName=lastName, email=email)) // the reason for the copy as the attributes are val
   }
}

Приведенный выше пример является одним из способов обработки обновления.Другим способом было бы заставить Entity использовать var вместо val, чтобы его можно было изменить.Какой рекомендуемый способ сделать это в Котлине?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...