6

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

假设有三个表,users、roles 和 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这里。

4

1 回答 1

3

Spring Data R2DBC 目前不支持关系。

因此,您要做的是拥有一个User2Role具有两个属性的单独实体:String usernameString rolename引用被引用实体的 id。

由于您还标记了问题 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 最终可能会迁移到相同的模型。

于 2020-05-11T16:03:35.563 回答