1

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

这是我的架构(PostreSQL):

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

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

我知道,我可以使用IntegerorLong并设置它们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 = "")
4

1 回答 1

0

看来这个问题将在 Spring Boot 2.4 中修复

https://github.com/spring-projects/spring-data-r2dbc/issues/402

于 2020-08-31T11:20:28.920 回答