Я использую 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
, чтобы его можно было изменить.Какой рекомендуемый способ сделать это в Котлине?