在 Spring Data R2dbc 中处理表之间关系的最佳实践



我试图在RDBMS中创建用户/角色关系,并希望使用R2dbc(Spring Data R2dbc(与后端数据库握手。

假设有三个表:用户、角色和user_roles。

@Table("users")
class User {
@Id
private String username;
private String password;
private String email;
@Builder.Default
private boolean active = true;
@Builder.Default
private List<String> roles = new ArrayList<>();
@Column("created_at")
private LocalDateTime createdDate;
}

与 JPA 不同,R2dbc 重用 spring-data-relational-common(Spring Data Jdbc 中也使用(来注释表,但没有解决关系的工具,例如这里的roles

Spring Data R2DBC目前不支持关系。

因此,您要做的是拥有一个单独的实体User2Role,其中包含两个属性:引用引用实体的String usernameString rolename

由于您还标记了问题Spring Data JDBC:Spring Data JDBC确实支持1:1和1:M引用,但不支持M:1或M:N关系。有关这方面的一些背景信息,请参阅 https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates。

Spring Data R2DBC最终可能会转向相同的模型。

最新更新