gpt4 book ai didi

java - Spring 数据JPA : extend a JPA Query generically

转载 作者:行者123 更新时间:2023-12-01 06:09:33 28 4
gpt4 key购买 nike

在我的项目中,我必须实现 Multi-Tenancy 功能(针对每个客户)。这个想法是在每个实体中存储一个属性(customer_id)以进行分离。

要获取某个客户的数据,我需要使用此属性扩展 SQL。

示例:

billRepository.findByDateAndCustomerId(date, customerId);

结果是

select * from bill where date = ? and customer_id = ?

但是我想要一个像这样的方法

billRepository.findByDate(date);

结果与上面相同。

select * from bill where date = ? and customer_id = ?

是否有可能以通用方式注入(inject) customer_id(例如 sql 预处理器)?知道如何使用 spring-jpa 或 JPA (hibernate) 来做到这一点吗?

谢谢乔克迪

最佳答案

我怀疑 JPA Api、Hibernate 或任何其他 ORM 框架是否提供此类功能。使用起来会很困难。由于 customer_id 不是常量,您如何才能输入正确的值?您如何知道哪些查询应该更改,哪些不应该更改?

更糟糕的是,在我看来这将是危险的。以隐藏方式更改查询可能会允许 SQL 注入(inject)。

可以覆盖 API 中的某些方法来添加您需要的新子句,但这似乎不是一个好主意。我认为创建动态选择查询并尽可能少地更改代码的正确方法是使用 Criteria 和 Predicate 接口(interface)。

关于java - Spring 数据JPA : extend a JPA Query generically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37724736/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com