【问题标题】:Spring two repositories of same entity [duplicate]Spring相同实体的两个存储库[重复]
【发布时间】:2020-02-06 01:52:04
【问题描述】:

我的应用程序中有多个不同类型的用户,每种类型都有自己的角色(显然还有权限)

我想使用 spring data rest,但此功能必须仅适用于 ADMIN_ROLE 用户。

然后我为每个实体创建了 2 个存储库,一个用于管理员,另一个用于其余用户:

@RepositoryRestResource(exported = false)
public interface MenuRepository extends JpaRepository<Menu, Integer> {

}

// -------------------------------------------------------------------

@RepositoryRestResource
@PreAuthorize("hasRole('ROLE_ADMIN')")
public @interface AdminRestRepository {
}

// -------------------------------------------------------------------

@AdminRestRepository
public interface AdminMenuRestRepository extends JpaRepository<Menu, Integer> {
}

问题是,一旦我启动应用程序,有时存储库会被导出,而其他时候却没有......任何线索?

【问题讨论】:

    标签: spring spring-boot spring-security java-8 spring-data-jpa


    【解决方案1】:

    我找到了这个问题的解释。

    在一个 spring 应用程序中不可能有 2 个存储库用于同一个实体,因为存储库是由实体类标识的(例如,PersonRepository 是由 Person 类标识的)使用映射。

    来源可以在这里找到:Multiple Repositories for the Same Entity in Spring Data Rest

    作为一种工作方式,可以创建另一个实体并将其映射到同一个数据库表,然后为其创建另一个存储库(例如,我会有 PersonRepository 和 Person2Repository,其中 Person 和 Person2 映射到同一个表)

    我最终将使用基于 Spring url 的安全性并通过它的 url 保护每个 rest 端点。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2018-03-30
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 2023-02-09
      • 2017-12-02
      • 2020-12-06
      • 2016-07-06
      • 1970-01-01
      相关资源
      最近更新 更多