【问题标题】:Spring Data JDBC Kotlin NoSuchMethod error: Dialect.getIdGeneration()Spring Data JDBC Kotlin NoSuchMethod 错误:Dialect.getIdGeneration()
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 2016-12-14
      • 2022-08-10
      • 2021-10-05
      • 2017-07-17
      • 2020-01-27
      • 2017-02-02
      • 2021-01-07
      • 1970-01-01
      相关资源
      最近更新 更多