【发布时间】:2021-02-15 19:31:46
【问题描述】:
我正在 Kotlin 中编写一个非常简单的 Spring Data JDBC 存储库(使用 Postgres 作为数据库):
data class Label(
@Id
@GeneratedValue
@Column( columnDefinition = "uuid", updatable = false )
val id: UUID,
val name: String
)
@Repository
interface LabelRepository: CrudRepository<Label, UUID> {}
当我保存存储库时:
val l = Label(id = UUID.randomUUID(), name = "name")
labelRepo.save(l)
它工作正常。但由于id 不为空,Spring Data JDBC 将始终将其视为对现有标签实体的“更新”,而不是使用生成的 ID 创建新实体。
所以我将id: UUID 更改为id: UUID? 并拥有val l = Label(id = null, name = "name")
但是调用相同的save() 方法给了我:
java.lang.NoSuchMethodError: 'org.springframework.data.relational.core.dialect.IdGeneration org.springframework.data.relational.core.dialect.Dialect.getIdGeneration()'
我在这里尝试了一个解决方案:https://jivimberg.io/blog/2018/11/05/using-uuid-on-spring-data-jpa-entities/ 但它没有用,仍然给我同样的错误
想知道这是什么原因以及为什么只有当我将UUID 更改为UUID? 时才会弹出此错误?
【问题讨论】:
标签: spring kotlin spring-data