【发布时间】:2016-07-06 20:45:08
【问题描述】:
是否可以使用 Spring Data Rest 为同一个 JPA 实体发布两个不同的存储库? 我为这两个存储库提供了不同的路径和 rel 名称,但两者中只有一个可用作 REST 端点。 我有两个存储库的原因是,其中一个是摘录,仅显示实体的基本字段。
【问题讨论】:
-
这是不可能的。使用 Spring Data REST,托管资源是一个实体而不是存储库。该库维护一个
Map的托管资源,其中键是实体类。因此,实体一次只能映射到一个存储库接口(因为Map只能为键保存一个值)。如果您的应用程序对每个实体类拥有多个存储库至关重要,您可能需要向 Spring Data 团队提出增强请求。 -
有MultiMaps。从技术上讲,肯定没有障碍。从语义的角度来看,在我们的用例中,资源不能用实体来标识,而是用数据库来标识。视图对应于 Spring Data Rest 中的 Projections。因此,如果我可以将投影和操作映射到资源,那就太好了。
-
我的评论是基于actual Spring Data REST implementation。我知道有像
MultiMaps 这样的结构,这就是为什么我建议您考虑向 Spring Data 团队提出增强请求。 -
对于您的评论,表格及其视图对我来说是独立的对象。如果您必须执行 DDL 才能触发 DML 查询,那将成为一个单独的对象。如果数据库将表和视图分开处理,那么其他应用程序层也应如此。考虑到这一点,一个表将映射到它自己的 JPA 实体,而一个视图将映射到它自己单独的实体。然后两者都可以拥有自己的存储库接口,并且现有的 Spring Data REST 基础架构可以正常工作。
标签: spring spring-data spring-data-jpa spring-data-rest