我有一个典型的应用程序,用户可以在多个组中,当然,一个组可以容纳多个用户:
User <-> GroupMember (ManyToMany) <-> Group
此外,GroupMember
可以有其他关系,例如它可以有一个属于它的项目 - 但仅限于该特定组的上下文中:
GroupMember <- OneToMany <- GroupMemberItem
我的第一个问题是:让我们说有GroupRepository
@RepositoryRestResource(collectionResourceRel = "groups", path = "groups")
public interface GroupRepository extends JpaRepository<GroupEntity, Long> {
}
如何只获取用户实际分配给的组,并使另一个用户无法访问他不是的组。
@RepositoryRestResource
/ JpaRepository
actullay是为此设计的吗?我绝对反对编写@Query
注释,我最终编写的查询无法完全解释为什么我想首先使用它们。
所以如果我告诉你
&#34; 我希望http://localhost:8080/groups返回当前登录用户登录的所有组&#34;
你会建议我去@RestController
,@Service
,@Repository
我自己实现查询的地方甚至可能会在此时切换到jOOQ或你会告诉我去@RepositoryRestResource
,因为有一种非常简单的方法可以实现这一点,而无需在Java interface
内编写复杂的查询吗?
第二个问题是对第一个问题的跟进。说过GroupMember
可以拥有一个或多个GroupMemberItem
,我很难理解如何使用@RepositoryRestResource
来获取所选项中登录用户的所有项目组。只编写SQL查询不是问题,但可以使用@RepositoryRestResource
/ JpaRepository
来完成吗?如果有,怎么样?我找不到一个例子,我现在已经找了很长一段时间。