当前位置: 首页 > 知识库问答 >
问题:

用于多对多映射的Spring数据r2dbc

胡光霁
2023-03-14

我使用的是Spring数据r2dbc,它不支持多对多映射。

表格:-

user
user_role
user_role_mapping

通常,一个用户可以有多个映射。

Sql查询,

从user u、user\u role\u mapping urm、user\u role ur中选择*其中u.user\u id=:userId和u.org\u id=:orgId和u.user\u id=urm。用户id和ur。role\u id=urm。角色\u id

这里,我有一个模型对象,它包含所有3个类的所有属性。在这里,由于用户有多个角色,我将获取多个记录,然后使用用户详细信息和角色列表构建单个记录。

模特卡尔斯,

class User {
  private long userId;
  private String userName;
  private List<String> roles;
}

Spring r2dbc是否有现成的支持,它返回一个包含用户详细信息和列表的用户对象

共有1个答案

云弘壮
2023-03-14

Spring data r2dbc不支持自动连接,例如完整的ORM。

有这个扩展支持它,可能可以满足您对开箱即用支持的需求。它与spring-data-r2dbc集成,并添加了一些ORM功能,例如关系。

您的模型将是这样的:

@Table
class User {
    @Id @GeneratedValue
    private Long userId;
    @Column
    private String userName;
    @JoinTable
    private Set<UserRole> roles;
}

@Table
class UserRole {
    @Id @GeneratedValue
    private Long roleId;
    @Column
    private String roleName;
    @JoinTable
    private Set<User> users;
}

以及您的存储库,以加载具有链接角色的用户:

interface UserRepository extends LcR2dbcRepository<User, Long> {
    default Mono<User> findUserByIdWithRoles(long userId) {
        return SelectQuery.from(User.class, "user")
            .join("user", "roles", "role")
            .where(Criteria.property("user", "userId", userId))
            .execute(getLcClient())
            .single();
    }
}
 类似资料:
  • 有两张数据表,通过第三张数据表来表示关联关系,我们称之为多对多的映射 如上图,通过一个中间数据表的两个字段,分别指向两个对象的主键,可以实现多对多映射。所以,Pet.foods(一个 List<Food>) 或者 Food.pets(一个List<Pet>)就是多对多映射。 在 POJO 中配置多对多映射 在 POJO 类中字段中增加注解 @ManyMany: @Table("t_food")

  • 我一直在使用多对多映射,这里是我的POJO类。 Menu.java: 使用者爪哇: 我有用户,菜单和第三个映射表这是自动创建的,我成功地得到结果时,在mysql中执行以下查询 我想在Hibernate中写这个查询如何处理这个东西???

  • 主要内容:@ManyToMany 示例,程序输出结果多对多映射表示集合值关联,其中任何数量的实体可以与其他实体的集合关联。 在关系数据库中,一个实体的任何行可以被引用到另一个实体的任意数量的行。 完整的项目目录结构如下所示 - @ManyToMany 示例 在这个例子中,我们将创建学生和图书馆之间的多对多关系,以便可以为任何数量的学生发放任何类型的书籍。 这个例子包含以下步骤 - 第1步: 在包中创建一个实体类,包含学生ID(s_id)和学生姓名(

  • 参考此Hibernate文档后 在我的情况下,将“Person”替换为“Employee”,将“Phone”替换为“Company”,将“Person\u Phone”替换为“EmployeeCompany”。 以上Hibernate docs示例和my project示例的唯一区别是黑白。在Hibernate文档示例“Person\u Phone”中,将“phones\u Id”作为唯一约束。而

  • 有两张数据表,其中A表的某个字段的值指向B表的主键。因为B表的任何一条记录理论上可以对应A表的多条记录,所以称这种 映射为B表对A表数据的一对多映射。 上述结构,如果用 POJO 来表示的话,可以参看下图: 如上图,一个 Master 自然就能对应多个 Pet ,所以, Master.pets (一个 List<Pet>) 就可以指向多个 Pet 对象, 那么我们说 Master.pets 就是

  • 问题内容: 我的数据库包含3个表:User和Service实体具有多对多关系,并与SERVICE_USER表联接在一起,如下所示: 用户-SERVICE_USER-服务 SERVICE_USER表包含附加的BLOCKED列。 执行这种映射的最佳方法是什么?这些是我的实体类 我遵循以下示例http://giannigar.wordpress.com/2009/09/04/m … using-jpa