Spring R2DBC:如果 id 为零,则保存新实体
Spring R2DBC: Save new entity if id is zero
我正在从传统的 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
不可为空.否则我必须做大量不必要的空检查。
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
我正在从传统的 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
不可为空.否则我必须做大量不必要的空检查。
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