我有以下Kotlin代码:
val book = bookRepository
.findById(1)
.orElseThrow { DoesNotExistException("Book with ID 1 does not exist") }
bookRepository.save(book)
我希望这段代码可以再次保存相同的实体。但是,它实际上是通过复制所有字段并更改ID来生成新实体的。
实体本身在这里:
@Entity
data class Book(@Id
@GeneratedValue
var id: Long?,
val status: Book.Status
)
我在JDBC中使用micronaut-data
(以前称为Micronaut Predator
),而不在使用JPA。
如何在不创建新实体的情况下更新现有实体?
答案 0 :(得分:3)
这是设计使然的方式。从文档:https://micronaut-projects.github.io/micronaut-data/snapshot/guide/#jdbcQuickStart,向下滚动到“更新实例(更新)”部分:
对于Micronaut Data JDBC,您必须手动实现更新方法,因为JDBC实现不包含任何脏检查或持久性会话概念。因此,您必须为存储库中的更新定义显式更新方法。