java - Spring R2DBC:如果id为零,则保存新实体

标签 java spring kotlin spring-data-r2dbc r2dbc

我正在从传统的JPA代码库中迁移,并遇到一个问题,其中无法通过将id设置为零来保存新实体。

这是我的架构(PostreSQL):

CREATE TABLE my_user (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL
);

在JPA中,我可以将id设置为0,它将被视为一个新实体。新的ID将自动分配。
但是,在R2DBC中,新实体始终以id = 0保存,这是不可能的。

我知道,我可以为此使用IntegerLong并将其设置为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/

相关文章:

java - 在不更改模型的情况下对数据模型进行编码/解码的最佳方法?

java - 在 Spring 中 Autowiring Bean 列表并获取它们的名称

java - 单例线程安全列表的实现

java - 在不向客户端应用程序公开依赖项的情况下使用 Spring

android - ViewModel 将 ArrayList 大小返回为零

java - Java中的类转换异常: cannot be cast

java - Ksoap简单数组android

java - android.content.ActivityNotFoundException : No Activity found to handle Intent

android - 未声明可选的字段接受 null 作为值

kotlin - 无法使用 Room ORM Kotlin 保存包含 List<Model> 的数据模型