spring - 使用 CrudRepository 更新休眠实体
问题描述
我目前正在编写我的第一个 Spring Boot Kotlin 应用程序,并试图创建一个具有 JPA 持久性的 rest API。基础进展顺利,但我正在努力更新补丁端点(@patchMapping)上的模型。
我想遵守适当的休息标准,因此我使用@PatchMapping("/company/{id}")
.
我希望能够以这样的方式调用 CrudRepository。
@PatchMapping("/company/{id}")
fun update(@PathVariable id: Long, @RequestBody updateRequest: Company) : Company {
return repository.update(updateRequest, id)
}
但似乎春天的做法是在 requestBody 中传递您要更新的对象的 id?例如
repository.save(updateRequest)
然后自动合并对象。但这与任何理智的休息惯例相冲突......
是否有可用于我想要实现的集成解决方案?我想避免编写我自己的逻辑,因为我希望春天有这个功能。
解决方案
你需要这样的东西吗?
@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>
推荐阅读
- reactjs - React:react-datepicker 不会更新状态
- python - matplotlib:填充子图的标题在最后一行不起作用
- python - 拟合 cos 平方函数
- javascript - 带有标签导航/可访问性问题的 Javascript Material UI 错误
- loops - 来自循环条目列表的 Tkinter recal 值
- python - 有没有办法在不退出pygame的情况下关闭窗口
- ansible - 运行 ansibleplaybook 时出现密码提示
- python - 使用 Series 中的行索引和列名捕获 DataFrame 值
- java - 根据我们是上午 9 点,如何获得今天上午 9 点或明天上午 9 点的时间戳?
- sql - 最佳 SQL 表设计