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

时间:2012-08-07 07:38:01

标签: spring-data spring-data-jpa

在应用程序中使用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数据JPA中这样做呢?假设我也为数量/成本编写实体类。显然,我需要在一些标准上加入表(使用外键),但是我不清楚哪个存储库应该存在这样的查询,因为我觉得这里没有特定的所有者存储库/类

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

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

提前致谢。

1 个答案:

答案 0 :(得分:3)

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

public interface ProductRepository extends CrudRepository<Product, Long> {
  List<Product> searchByUserAndLocation(User user, Location location); 
}