gpt4 book ai didi

继承所有存储库方法的 Spring Data JPA 全局过滤器子句

转载 作者:行者123 更新时间:2023-12-04 12:24:39 25 4
gpt4 key购买 nike

我们正在使用 Spring boot + Spring data JPA 和 hibernate 开发一个 Multi-Tenancy Web 应用程序。

Multi-Tenancy 是通过组织表实现的,该表作为外键连接到几乎每个表。这意味着每个数据库调用(Spring 数据存储库查询方法)都必须使用组织 ID 进行检查。

我需要一种方法,即“where organization_id =?”检查是否为每个查询方法自动注入(inject)。这样开发人员就不必专门为组织 ID 检查而烦恼。

这可以通过 Spring Data JPA 框架实现吗?这种方法的优缺点是什么?

谢谢你的时间。

最佳答案

如果你有一个基类,比如 BaseEntity,你可以使用@org.hibernate.annotations.Filter:

  • 在 BaseEntity 中:

    @FilterDef(name = "organizationFilter", parameters = @ParamDef( name="orgId", type="long"))
    @Filter(name = "organizationFilter", condition = "lang_id=:orgId")
  • 在 session 初始化时(覆盖 JpaTransactionManager.createEntityManagerForTransaction()?):

    session.enableFilter("organizationFilter").setParameter("orgId", organization.getId());
  • 关于继承所有存储库方法的 Spring Data JPA 全局过滤器子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43262592/

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