gpt4 book ai didi

spring-data-r2dbc - 用于多对多映射的 Spring Data r2dbc

转载 作者:行者123 更新时间:2023-12-05 04:53:02 27 4
gpt4 key购买 nike

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

表格:-

user
user_role
user_role_mapping

像往常一样,一个用户可以有多个映射。

SQL查询,

select * from user u, user_role_mapping urm, user_role ur whereu.user_id = :userId and u.org_id = :orgId and u.user_id = urm.user_idand ur.role_id = urm.role_id

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

模型调用,

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

是否有来自 Spring r2dbc 的开箱即用支持,它返回一个包含用户详细信息和 List<String> 的用户对象角色。

最佳答案

Spring data r2dbc 不像完整的 ORM 那样支持自动连接。

this extension支持它,可能可以满足您对 开箱即用支持 的需求。它与 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();
}
}

关于spring-data-r2dbc - 用于多对多映射的 Spring Data r2dbc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66202214/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com