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

管理来自多个表的数据Spring Data JPA

逄兴昌
2023-03-14

在应用程序中使用Spring Data JPA时,您通常定义实体(@Entity),编写存储库接口(扩展了CrudRepository),并进行一些超出本问题范围的额外配置。

例如,

@Entity
public class Product {
    // code removed for brevity
}

public interface ProductRepository extends CrudRepository<Product, Long> {
    // code removed for brevity
}

现在,如果我有多个像上面这样的实体,并且需要设计一个服务API,比如searchByProductAndUserAndLocation(假设这三个都是数据库表),那么在Spring Data JPA我应该如何做呢?假设我也为数量/成本编写实体类。显然,我需要根据某些条件(使用外键)连接表,但我不清楚哪个存储库应该保存这样的查询,因为我觉得这里没有特定的ownerrepository/class。

此外,我可以通过ProductService、LocationService等公开数据,然后组合结果,但我不会使用数据库层连接或其他优化,最终影响应用程序性能。

我确信这是一个很常见的用例,一般的做法是什么?

提前道谢。

共有1个答案

马宜民
2023-03-14

我相信根据方法的返回类型将方法分配给存储库是合理的,例如:

public interface ProductRepository extends CrudRepository<Product, Long> {
  List<Product> searchByUserAndLocation(User user, Location location); 
}
 类似资料:
  • 问题内容: 我有一个JSF数据表,它有三列,分别是:Work_Type_Desc,Project_Phase和Activity_Desc。这些列来自2个不同的数据库表,这两个表之间的关系是一对多的。 第一个表的名称为Work_Type。它具有1)Work_Type_Cd,2)Work_Type_Desc,3)Created_By_Name,4)Created_DT,5)Updated_By_Nam

  • 问题内容: 我试图让bash处理来自管道的stdin的数据,但是没有运气。我的意思是以下任何一项工作: 我希望输出在哪里。我试过用“”引号括住也不起作用。 问题答案: 采用 您 可以像这样欺骗从管道中接受: 甚至编写这样的函数: 但是没有意义-您的变量分配可能不会持续!管道可能会产生一个子外壳,其中环境是通过值而不是通过引用继承的。这就是为什么不打扰管道输入的原因- 它是未定义的。 仅供参考,ht

  • 问题内容: 如何从MySQL的多个表中选择COUNT(*)? 如: 编辑: 目标是返回此: 问题答案: 您可以通过使用子查询来实现,每个tableCount一个子查询:

  • 问题内容: 我们的数据模型分为两个数据库上的架构。这些模式是隔离使用的,除了在两者之间桥接的一些单键关系。没有跨两个数据库的写事务。 与这个问题类似,我们要使用Hibernate在不同数据库中的2个表上进行联接,我们想使用Hibernate来处理实体的联接。我们不能使用数据库解决方案(DB2上的联合视图)。 我们为Hibernate设置了两个单独的数据库配置(“医生”和“病人”),当使用DAO显式

  • 问题内容: 我可以用来自1个班级的不同数据填充表格视图。但这不适用于多个班级。知道如何解决吗?我已经检查了关于stackoverflow的类似问题。但是他们都帮不了我。如果您对“回调”类有任何建议,请提供完整的导入信息,因为那里有几个回调类。 进一步的问题:如何在TableCell的HashSet中显示实例的某个属性。所以我在TaskControl类中有一个HashSet。在该HashSet中,有

  • 数据表管理 概述 数据表查询 数据meta信息查看 数据预览 数据表查询服务 数据表管理 更新时间:2018-08-08 15:49:54 概述 在数据表管理中,开发者可查看到一个项目下所有的数据表信息,可以对表进行以下操作:数据表查询、数据meta信息查看,数据预览;在开发环境和生产环境都支持对各自环境中数据表的管理。 数据表查询 开发者可根据数据表的中文或英文名称进行模糊查询;同时支持按数据表