我正在从传统的JPA代码库中迁移,并遇到一个问题,其中无法通过将id设置为零来保存新实体。
这是我的架构(PostreSQL):
CREATE TABLE my_user (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
在JPA中,我可以将id设置为
0
,它将被视为一个新实体。新的ID将自动分配。但是,在R2DBC中,新实体始终以id = 0保存,这是不可能的。
我知道,我可以为此使用
Integer
或Long
并将其设置为null
,但是我正在使用Kotlin并希望使id
不可为空。否则,我必须进行大量不必要的null检查。userRepo.save(User(0, "A New User")) // works
userRepo.save(User(0, "Another New User")) // error, same id (but works in JPA)
@Table("my_user")
data class User(@Id var id: Int = 0,
var name: String = "")
最佳答案
看来这个问题将在Spring Boot 2.4中解决
https://github.com/spring-projects/spring-data-r2dbc/issues/402
关于java - Spring R2DBC:如果id为零,则保存新实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62232569/