我正在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: 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?
?
1条答案
按热度按时间ghg1uchk1#
nvm,原来我得用
implementation("org.springframework.boot:spring-boot-starter-data-jdbc")
依赖而不是implementation("org.springframework.data:spring-boot-starter-data-jdbc:2.1.3")