【发布时间】:2021-07-28 14:14:38
【问题描述】:
我有 3 个类在实体级别使用多对多关系(herbibate) 他们是 Teams、Users 和 TeamUsers。
由于我使用的是hibernate,它们都是Fetch Lazy
我们有 3 个接口(由 @Autowired 在 Service 或 repo 层使用),即:
1.TeamRepository extends PagingAndSortingRepository<Team, Integer>
2.UserRepository extends PagingAndSortingRepository<User, Integer>
3.TeamUserRepository extends PagingAndSortingRepository<TeamUsers, Integer>
这里是多对多关系映射的核心代码:
团队班级:
@OneToMany(mappedBy = "team", fetch = FetchType.EAGER)
private Set<TeamUsers> team_users = new HashSet<TeamUsers>();
用户类别:
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER)
private Set<TeamUsers> team_users = new HashSet<TeamUsers>();
TeamUsers 类:
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "TEAM_ID")
private Team team;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "USER_ID")
private User user;
现在,我的问题是,处理这些数据的最佳做法是什么?
例如:
1.我需要数据库中的所有团队信息和团队成员
在restful控制器中获取映射函数,我应该返回什么?我应该使用 TeamUser 存储库(或者可能是另外一个服务层)返回 findAll() 吗?如果这样做,数据将作为用户和团队权利的对象集合出现(可能还包含该表中的额外列)? Json 能否成功包含该数据?
2.我在网页上,我想从团队中删除用户。
此时我知道来自 HTML 的 TeamID 和 UserID,当我将 Post 请求发送到 API 时,我是否应该通过 UserID 获取 User 对象,然后通过 TeamID 获取 Team 对象,然后通过提供 User 对象获取(Query)TeamUsers 对象和团队对象?或者只是通过 id 查询(来自 html 上的 TeamUsers)发送到 API 并简单地删除这个 TeamUsers 实体?
我是 Spring 和前端开发的新手,非常感谢您的帮助!
【问题讨论】: