spring数据jdbc kotlin nosuchmethod错误:dialect.getidgeneration()

n1bvdmb6  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(248)

我正在kotlin中编写一个非常简单的spring数据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 isnotnull spring数据jdbc将始终将其视为对现有标签实体的“更新”,而不是使用生成的id创建新的标签实体。
所以我改变了 id: UUIDid: 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/ 但它不起作用,仍然给我同样的错误
想知道这是什么原因,为什么这个错误只有在我改变的时候才会出现 UUIDUUID? ?

ghg1uchk

ghg1uchk1#

nvm,原来我得用 implementation("org.springframework.boot:spring-boot-starter-data-jdbc") 依赖而不是 implementation("org.springframework.data:spring-boot-starter-data-jdbc:2.1.3")

相关问题