java - JpaRepository是否有patch方法来更新特定对象

标签 java spring rest spring-boot kotlin

我想知道 JpaRepository 是否有一种方法可以仅更新对象的特定值,而不从数据库获取整个对象。这是我的代码,用于进一步解释它:

Controller

@PatchMapping("/{labelKeyUuid}")
@ApiOperation("Update the current version of an existing label key")
fun updateCurrentVersion(@PathVariable labelKeyUuid: UUID,
                         @RequestBody labelValueUuidRequest: LabelValueUuidRequest) {
    val labelValue = labelValueService.findByUuid(labelValueUuidRequest.uuid)
            ?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "Label value with uuid '\'${labelValueUuidRequest.uuid}\'' not found")
    return labelKeyService.updateCurrentVersion(labelKeyUuid, labelValue)
}

服务

fun findByUuid(uuid: UUID) : LabelValueEntity? {
    return labelValueRepository.findByIdOrNull(uuid)
}

fun updateCurrentVersion(labelKeyUuid: UUID, labelValue: LabelValueEntity) {
    labelKeyRepository.save(labelValue, labelKeyUuid)
}

存储库

@Repository
interface LabelKeyRepository : JpaRepository<LabelKeyEntity, UUID>

JpaRepository 有 save(entity) 方法。我知道我可以通过从数据库获取对象并使用新对象设置 labelValue 并将其保存到数据库来解决此问题。有没有更快的方法来做到这一点?

最佳答案

如果不需要访问对象的当前状态,可以使用entityManager.getReference()方法。与 entityManager.find() 相反,此方法不会调用 select 语句。

entityManager.getReference()JPARepository 上作为 getOne() 方法公开。

请注意,这两种方法返回的对象都具有自动脏检查,您应该在同一事务中调用 find()getReference() 以及后续修改,并且更改将自动保留。仅在存储库上使用 save() 来保存新实体或附加分离的实体。

另请阅读: When to use EntityManager.find() vs EntityManager.getReference() with JPA

关于java - JpaRepository是否有patch方法来更新特定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57833864/

相关文章:

java - 使用 Java 编程代理服务器 - 如何?

java - Spring 缓存 - "Null key returned for cache operation"

java - react 堆核心 - java.lang.IllegalStateException : Queue full? !在 Hot Publisher (ConnectableFlux) 上

java - REST Spring Java 中 ResponseEntity<> 的返回类型和简单对象(例如用户)之间有什么区别?

ios - 我如何获取应用程序开发人员发布的应用程序商店评论

java - 如何使用 Thymeleaf 通过 "ID"选择列表项并定向到另一个详细信息页面?

java - 让JFrame显示其他JFrame而不打开新窗口

java - Spring 中使用泛型嵌套 Autowiring

java - Hibernate 事务管理器 - Java 配置

java - jQuery/JSON 调用的 REST WS 没有返回响应