Kha*_* Ly 4 spring reactive r2dbc
你能帮我解决下面的问题吗
我有一个实体类:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
@Id
private Long id;
private String name;
}
Run Code Online (Sandbox Code Playgroud)
我将其保存在 Postgresql 中,代码如下:
public Mono<User> save(User user){
return databaseClient().inTransaction(db -> {
return db
.insert()
.into(User.class)
.using(user)
//todo: return saved user
});
}
Run Code Online (Sandbox Code Playgroud)
我希望获得保存的用户,我该怎么做
Spring Data R2DBC 期望您的数据库返回生成的键。使用 Postgres 时,请确保声明一个生成 Id 本身的列,例如SERIAL.
在你的情况下,这将是:
CREATE TABLE user (
id serial CONSTRAINT id PRIMARY KEY,
name varchar(255) NOT NULL,
);
Run Code Online (Sandbox Code Playgroud)
根据您使用的 API,您可以使用各种方法检索 Id:
DatabaseClient:操作通过将列名映射到值INSERT来返回生成的值。Map<String, Object>您需要自己提取 Id。R2dbcRepository:保存新对象会返回一个Mono<T>发出保存(更新)对象的对象,其中包含生成的 Id。一般来说,我们建议使用不可变对象来避免可见性和共享可变状态问题。@Wither当 Spring Data 需要将数据传播回对象时,Spring Data利用 Lombok 的模式创建新的对象实例。
也可以看看:
PostgresR2dbcRepositoryIntegrationTests| 归档时间: |
|
| 查看次数: |
8123 次 |
| 最近记录: |