Spring data jpa - 在执行前修改查询

2023-12-19

我正在开发一个在数据库中保存一些访问控制信息的项目。我们使用该访问控制信息来过滤用户可以看到的内容。我们使用的过滤器基于用户拥有的角色。我们希望使用 Spring Data 提供的存储库抽象,但我们希望能够在执行生成的查询之前对其进行调整。有没有办法附加在执行查询之前调用的侦听器或拦截器?这样我们就可以获得对查询对象的引用,并在执行查询之前对查询进行所需的任何调整。

我们正在考虑做的是创建我们自己的 JpaRepositoryFactoryBean,这样我们就可以按照描述覆盖 SimpleJpaRepositoryhere http://docs.spring.io/spring-data/commons/docs/1.6.5.RELEASE/reference/html/repositories.html#repositories.custom-behaviour-for-all-repositories。我们将重写 SimpleJpaRepository.getQuery 以对查询进行调整。然后对于所有生成的查找器方法,我们正在考虑扩展PartTreeJpa查询 http://docs.spring.io/spring-data/jpa/docs/1.4.5.RELEASE/api/org/springframework/data/jpa/repository/query/PartTreeJpaQuery.html并覆盖 PartTreeJpaQuery$QueryPreparer。在 QueryPreparer 中,我们将重写 QueryPreparer.createQuery 方法。我们不确定这是否是在执行之前访问所有查询的最简单方法。

我们考虑过添加一个 org.springframework.data.repository.core.support.QueryCreationListener,但它只会在创建查询时执行。我认为我们需要更有活力的东西。


我不确定您是否已经知道,但 Spring Data 团队正在为下一个版本开发该功能,以便 Spring Security 团队能够添加对 ACL 的支持。

添加通用查询增强的基础设施 https://jira.spring.io/browse/DATACMNS-293

被之前阻止的 Spring Security 问题:Spring Security / Spring Data Acl 集成 https://jira.spring.io/browse/SEC-2409

在我的公司,我们创建了一个 JpaRepositoryFactoryBean,它将创建一个自定义存储库,以允许我们添加 ACL 的过滤器,但我们只是为 findAll 和 findOne 方法这样做,所以我们失去了 Spring Data 的很多功能,并决定恢复该更改,我们仍在考虑以某种方式自动执行此操作。如果我们发现这太困难了,我认为我们会将这个责任委托给存储库的客户端,并等待 Spring Security/Data 对其的支持。

原问题已经有1年了。您找到了一种干净的方法吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring data jpa - 在执行前修改查询 的相关文章

随机推荐

  • PHP 对原始值的类型提示?

    我想知道是否可以类型提示一种方法来期望原始类型 像这样的事情 public function someMethod string str Or private function anotherMethod int num 就像你会的那样 p
  • 如何从数组中获得优化选择

    我有几个哈希数组 假设我有三个 如下所示 a cost 10 value 20 cost 9 value 20 cost 10 value 22 cost 2 value 10 b cost 4 value 20 cost 9 value
  • 如何捕获 pyqt closeEvent 并最小化对话框而不是退出?

    我有一个 QDialog 对象 当用户点击X按钮或按下Ctrl Q 我希望对话框转到最小化视图或系统托盘图标 而不是关闭 我怎么做 最小化而不是关闭的简单子类如下 class MyDialog QtGui QDialog def init
  • 如何在 R data.table 列的 STOUT 中设置制表位长度?

    我想在 R 中更一致地显示后续的数据打印data table 在 Vim 中 你可以这样做tapstop and csv vim 例如 代码 library data table http stackoverflow com a 43706
  • 尝试在移动控件视图中“加载更多”时引发 NoAccessSignal 异常

    我有一个 XPages 应用程序在 8 5 3 UP1 上运行 带有移动控制界面 它在我的开发和测试服务器上运行良好 但在生产中 当用户单击视图控件中的 加载更多 按钮时 我们会看到以下间歇性错误 2012 年 5 月 10 日 4 12
  • 如何用用户输入值填充 C 中的二维数组?

    注意 这是一个家庭作业问题 使用 FOR 构造将 2D 板填充为由下式给出的值 用户 程序要求电路板尺寸 n m 然后要求每个 板值 My try include
  • 更改 UINavigationBar 背景图像

    我一直在尝试更改应用程序的 UINavigationBar 的背景图像 我尝试了几种方法 首先 我将以下代码添加到我的 AppDelegate 类中 implementation UINavigationBar CustomImage vo
  • 如何使用 python 访问 Azure Dev Ops 数据,例如日期之间的变更集?

    我正在尝试连接到 AZURE Dev Ops 并获取更改集信息 以使用 PYTHON 自动准备发行说明 阅读来自中提供的文档和流程后github https github com microsoft azure devops python
  • python 日志记录 - 消息未显示在子项中

    我在使用 python 的日志记录时遇到一些困难 我有两个文件 main py 和 mymodule py 通常 main py 会运行 它会导入 mymodule py 并使用其中的一些函数 但有时 我会直接运行mymodule py 我
  • 使用具有嵌套关联的多态路径

    我有一个多态关联 如下所示 class Line lt ActiveRecord Base belongs to item polymorphic gt true end class Education lt ActiveRecord ba
  • mac excel vba循环:从列表中然后导出为pdf

    所以我迷失在这个之中 我在一张纸上有一个列表 学生列表 其中有 160 个学生编号 想要将单元格 A1 中的每个学生编号粘贴到反馈表中 然后以 pdf 格式导出到以学生编号作为文件名的文件 走到这一步了 干杯 麦克风 Sub Pdfexpo
  • 何时使用事件?

    在工作中 我们有一个庞大的框架 并使用事件将数据从其中的一个部分发送到另一部分 我最近开始了一个个人项目 我经常想到使用事件来控制我的对象的交互 例如 我有一个播放音效的 Mixer 类 我最初认为我应该接收事件来播放音效 然后我决定只让我
  • 为 VS UT Assert 类创建自定义扩展方法的最佳方法是什么?

    我想知道为 Microsoft Visual Studio 单元测试 Assert 类编写自定义扩展方法的最佳方法是什么 您可以为此创建扩展方法Assert https learn microsoft com en us dotnet ap
  • Matlab 中的克隆图 - 具有属性和数据

    我在 matlab 中编写了一个脚本 它可以生成一组数据 这些图形在格式方面应该非常相似 并且每个图形都应该显示一组数据 它是嵌入在 3D 域中的图形 这些图形中的每一个还应该显示该 3d 域内的一组粒子 所以我想创建第一个图形 然后制作它
  • 数千个多边形和 IE JavaScript 语句限制

    我正在编写一个应用程序 需要一次显示多达 4000 个多边形 其中一些具有数百个坐标 每个多边形都需要一个事件mouseover mouseout and doubleclick以及信息框标签 我最初遇到了 IE 8 中 JavaScrip
  • 为什么某些 HTML 元素可以使用 CSS 设置样式,但不能使用属性

    当我滚动浏览一些w3学校 https w3schools com我遇到了关于的文档部分inline元素和一个我以前从未真正思考过的问题 文档说如下 内联元素 An inline元素不会从新行开始 并且只占用所需的宽度 a a
  • 当子视图与 AVPlayer 重叠时移动字幕

    如果子视图 非本机 自定义播放器控件 出现在视频显示的系统标题上方 是否可以更改视频显示的系统标题 显示的字幕是文本 WebVTT 字幕 在某些屏幕尺寸上 当我切换到横向时 我们的自定义搜索栏控件会重叠显示在播放器底部的字幕 对于它的价值来
  • Angular Modal 服务不会使背景变灰

    我在 plunkur 有以下样本单击此处打开链接 http plnkr co edit GbeJbwwhwcs7plniPYth p preview var app angular module App ui bootstrap try a
  • 如何使用 AWSMobileClient 设置不同的配置 (awsconfiguration.json) 以进行调试和发布构建类型

    我想要不同的配置debug and release构建 所有配置都存储在里面awsconfiguration json 例如我有两个不同的配置文件 如何设置应使用哪个文件 使用时AWSMobileClient getInstance 它从文
  • Spring data jpa - 在执行前修改查询

    我正在开发一个在数据库中保存一些访问控制信息的项目 我们使用该访问控制信息来过滤用户可以看到的内容 我们使用的过滤器基于用户拥有的角色 我们希望使用 Spring Data 提供的存储库抽象 但我们希望能够在执行生成的查询之前对其进行调整