当前位置: 首页 > 知识库问答 >
问题:

Spring Data Rest中同一实体的多个存储库

白修谨
2023-03-14

有没有可能用Spring Data Rest为同一个JPA实体发布两个不同的存储库?我给了这两个存储库不同的路径和rel名称,但是其中只有一个可用作RESTendpoint。我有两个存储库的关键是,其中一个是摘录,只显示实体的基本字段。

共有3个答案

司马羽
2023-03-14

答案似乎是:每个实体只有一个存储库。

屠振濂
2023-03-14

最后,我使用@SubSelect创建了第二个不可变实体,并将其绑定到第二个JpaRepsotory,并将其设置为@RestResources(导出=false),这也鼓励了关注点的分离。

员工示例

@Entity
@Table(name = "employee")
public class Employee {

    @Id
    Long id

    String name

    ...

}
@RestResource
public interface EmployeeRepository extends PagingAndSortingRepository<Employee, Long> {

}
@Entity
@Immutable   
@Subselect(value = 'select id, name, salary from employee')
public class VEmployeeSummary {

    @Id
    Long id

    ...

}
@RestResource(exported = false)
public interface VEmployeeRepository extends JpaRepository<VEmployeeSummary, Long> {

}

上下文

单片应用程序中的两个包有不同的要求。需要在分页和排序存储库中公开UI的实体,包括CRUD函数。另一个是用于聚合后端报告组件,没有分页,但具有排序功能。

我知道我可以在请求Pageable之后从PagingAndSorting存储库中筛选结果。unpaged()但我只想要一个基本的JPA存储库,它返回了一些过滤器的List

子车高歌
2023-03-14

糟糕的是,不仅每个实体只能有一个spring数据rest存储库(@RepositoryRestResource),而且如果有一个常规的JPA@repository(如CrudRepository或PagingAndSorting),它还会与spring数据rest存储库交互(因为映射中的键是实体本身)。调试一个或另一个的随机负载浪费了好几个小时。我猜想,如果这是spring数据rest的硬限制,那么在尝试重写该值时,如果映射的键已经存在,至少会引发异常。

 类似资料:
  • 问题内容: 是否可以使用Spring Data Rest为同一JPA实体发布两个不同的存储库?我给两个存储库提供了不同的路径和rel-name,但是这两个存储库中只有一个可以用作REST端点。我拥有两个存储库的要点是,其中一个是摘录,仅显示实体的基本字段。 问题答案: 可怕的部分不仅是你只能有1个弹簧数据仓库休息(@RepositoryRestResource)每实体,但也说,如果你有一个普通JP

  • 我试图创建一个简单的网站,其中托管主题和评论。我已经从主题开始,并为它们创建了存储库: 我已经在servlet上下文中定义了存储库的路径。xml: 现在,我想在我的存储库中包含注释,但以下代码不起作用: 我的项目甚至都没建好。你能给我一个建议吗,如何为多个实体创建存储库(主题类和注释类是用@Entity声明的)? 我面对的是: TopicRepository类图标上有HDD图片 org.sprin

  • 我有几个实体,并使用Spring Data JPA存储库与规范查询我的数据库。因此,我创建了一个泛型类< code>SpecBuilder来基于查询描述(< code>MyQueryDescriptor)构建我的查询。 我的存储库: 和 现在有三件事我不太确定:< br> 1) 使用泛型SpecBuilder是一个干净的设计吗? 2) 有没有办法避免为每个实体编写这些存储库接口?假设一个通用存储库

  • 问题内容: 我刚hibernate,就偶然发现了这个问题,我找不到解决方案。 当持久化父对象(与子对象具有 一对多 关系)时,该父对象的外键不存储在子对象的表中。 我的课程: Parent.java Child.java Test.java 当调用 test1()时 ,两个实体都被写入数据库,但是CHILD表中的字段PARENT_ID保持为空。 到目前为止,我唯一的解决方法是 test2() -首

  • 当我映射同一个实体时,就像这里回答的那样: Hibernate与同一实体的多对多关联 在“tbl_friends”表中,我有相同含义的行。例如,我有id=1的用户和id=2的用户。在“tbl_friends”表中,当他们作为朋友链接时,我有两行 使用Hibernate或JPA引用是否可以在一行(1-2或2-1)中建立这种关系?