在应用程序中使用 Spring Data JPA 时,您通常会定义实体 (@Entity) 并编写存储库接口(扩展 CrudRepository)并执行一些超出此问题范围的额外配置。
例如,
@Entity
public class Product {
// code removed for brevity
}
public interface ProductRepository extends CrudRepository<Product, Long> {
// code removed for brevity
}
现在,如果我有多个像上面这样的实体并且需要设计一个像 searchByProductAndUserAndLocation 这样的服务 API(比如说所有三个都是数据库表),我应该如何在 Spring data JPA 中这样做?假设我也为 Quantity/Cost 编写实体类。显然,我需要根据某些条件(使用外键)加入表,但我不清楚哪个存储库应该保存此类查询,因为我觉得这里没有特定的所有者存储库/类。
此外,我可以通过 ProductService、LocationService 等公开数据,然后组合结果,但我不会使用数据库层连接或其他最终影响应用程序性能的优化。
我确定这是一个非常常见的用例,一般做法是什么?
提前致谢。