使用 Spring 具有不同视图的 JPA EntityGraph

2024-03-03

我有一个 Spring 应用程序。登录后,我调用 getUserByEmail() 方法。

我只需要用户和角色数据。根据角色,我将显示不同的视图,每个视图都有不同的数据,并且需要不同的用户子实体。

似乎我必须使用不同的子实体调用 getUserByEmail() 。

这是我涉及实体的部分代码:

EntityGraph(value = "withAddresses", type = EntityGraphType.FETCH)
public class User{
  public firstName;
  public lastName;

  @OneToMany(fetch = FetchType.LAZY)
  public List<Address> addresses

  @OneToMany(fetch = FetchType.LAZY)
  public List<Order> orders;             
 }

 public userRepository extend jPaRepository(User.class,Long){
  @EntityGraph(name="withAdresses")
  getUserByEmail(String email)

  /* if possible */
  @EntityGraph(name="withOrder")
  getUserByEmail(String email)
 }
  1. 是否可以有两个具有相同查询名称的 User 对象图? 因为不同的视图需要不同的数据。

  2. 另外,当切换到新视图(弹簧控制器中的新调用)时,先前视图中的事务将已经关闭,我必须进行新调用以与用户获取不同的数据。如果您不在同一事务服务方法中,我不明白 fetch Lazy 有何帮助,除非我没有遗漏某些内容。

例如,如果我需要“orderWiew.html”中的订单数据,订单的延迟加载不会有帮助,我必须再次完全调用相同的用户数据和附加订单数据


只是关于使用多个实体图的建议:在我工作的地方,我们使用了 Spring Data 可以对查询方法使用多个前缀这一事实。我们设定了一个约定,具有不同前缀的方法具有不同的实体图。因此,例如,findUserByEmail(String) 可以使用比 readUserByEmail(String) 更惰性的图。

不幸的是,我认为 Spring Data 不支持传递实体图以动态方式使用。不过,您可以实现它并将其添加到您的存储库中。为此,您应该:

创建一个声明新方法的接口(但不扩展 JpaRepository 或其他存储库接口)

public interface UserCustomOperations{
    User findUserByEmail(String email, String entityGraph);
}

让您的存储库接口扩展该接口。

public interface UserRepository extends JPaRepository<User,Long>, UserCustomOperations{
    // Not much to do here anymore
}

创建一个在同一包中实现自定义行为的类,后缀为 Impl(默认情况下)。

public class  UserRepositoryImpl implements UserCustomOperations{
    public User findUserByEmail(String email, String entityGraph){
        // Inject the EntityManager and execute standard Jpa query with the entity graph set
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring 具有不同视图的 JPA EntityGraph 的相关文章

  • Spring Boot自动装配存储库始终为空[重复]

    这个问题在这里已经有答案了 每次我进入我的服务类时 存储库似乎都没有自动连接 因为它不断抛出 NullPointerException 谁能帮我检查一下我缺少什么吗 这是我的代码 演示应用程序 java package com exampl
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • Spring Security SAML2 使用 G Suite 作为 Idp

    我正在尝试使用 Spring Security 5 3 3 RELEASE 来处理 Spring Boot 应用程序中的 SAML2 身份验证 Spring Boot 应用程序将成为 SP G Suite 将成为 IDP 在我的 Maven
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法
  • 如何在 Spring 属性中进行算术运算?

  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式
  • Spring-ws:如何从没有“Request”元素的 xsd 创建 Wsdl

    尝试为客户端实现 SOAP Web 服务 我需要一个 wsdl 文件来通过soapUI 测试该服务 但正如您在下面看到的 这个 xsd 没有 Request 和 Response 方法 所有请求和响应都被定义为基本 ServiceProvi
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • 将 Apache Camel 执行器指标发送到 Prometheus

    我正在尝试转发 添加 Actuator Camel 指标 actuator camelroutes 将交换 交易数量等指标 发送到 Prometheus Actuator 端点 有没有办法让我配置 Camel 将这些指标添加到 Promet
  • 泛型、数组和 ClassCastException

    我想这里一定发生了一些我不知道的微妙事情 考虑以下 public class Foo
  • 配置“DataSource”以使用 SSL/TLS 加密连接到 Digital Ocean 上的托管 Postgres 服务器

    我正在尝试托管数据库服务 https www digitalocean com products managed databases on 数字海洋网 https en wikipedia org wiki DigitalOcean 创建了
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复

随机推荐

  • React-router 不会在不同路径上重新挂载组件

    我的反应应用程序中有一个组件 它是一个表单 该表格用于创建新许可证或编辑现有许可证 无论哪种方式 它都只是一个组件 它会检查 componentDidMount 是哪个 pageType 添加 更新 现在我的问题是 当我使用表单编辑许可证
  • 在 C# 中枚举 Collection 的子集?

    在 C 中是否有一种好方法可以仅枚举 Collection 的子集 也就是说 我有大量对象的集合 例如 1000 个 但我只想枚举元素 250 340 有没有一种好方法可以获取集合子集的枚举器 而无需使用另一个集合 编辑 应该提到这是使用
  • 如何从 Java 7 调用 Kotlin 挂起协程函数

    我正在尝试从 Java 7 调用 Kotlin 函数 我正在使用协程 并且这个被调用的函数正在挂起 例如 suspend fun suspendingFunction Boolean return async longRunningFunc
  • Scala 元组列表到平面列表

    我有元组对列表 List String String 并想将其展平为字符串列表 List String 一些选项可能是 连接 list map t gt t 1 t 2 一个接一个交错 在您发表评论后 您似乎在要求这个 list flatM
  • 计算一系列值的 RGB 值以创建热图

    我正在尝试用 python 创建热图 为此 我必须为可能值范围内的每个值分配一个 RGB 值 我想将颜色从蓝色 最小值 更改为绿色到红色 最大值 下面的图片示例解释了我对颜色组合的看法 我们的范围是从 1 纯蓝色 到 3 纯红色 2 介于两
  • Angular2的ng-select如何实现分组?

    我正在实现多个选择下拉菜单Angular2项目按照这个link https plnkr co edit JcG8uO9nIfSGMEKdLf0Y p preview 但现在我必须在这个多选下拉列表中显示分组 那么我该如何实现呢 或者有其他插
  • Javafx 橡皮筋调整大小错误

    所以 我的橡皮筋课上有一个错误 但我似乎无法修复它 我基本上做的是 我有一个边框窗格 它是我想要调整大小的节点的外部窗格 我为这个 borderpane 指定一个宽度为 1 像素的边框 查看 css 我还为这个边框面板分配了 4 个矩形 每
  • Angular 2 - 锚链接到当前页面上的元素[重复]

    这个问题在这里已经有答案了 如果问题标题不清楚 我有一个带有某些 链接 部分的网页 因此有人可以单击该链接并转到同一模板上的元素 这并不一定意味着更改 URL 我尝试过的要点 a href Section B a a href p Cont
  • 升级到 macOS Sierra 后无法从终端运行 R

    我最近将 MacBook 更新到了 macOS Sierra 版本 10 12 3 16D32 并且我无法再直接从终端运行 R DN51ssqi kjytay R bash R command not found DN51ssqi kjyt
  • ACM 交互器冻结

    我正在尝试使用 Swing 和 ACM 交互器制作一个非常简单的程序 它直接取自课堂讲义 但在我的计算机上不起作用 当我运行它时 它可以正常运行大约半秒 然后短暂闪烁 重新加载 然后所有按钮和文本字段功能都丢失 这是代码 import ac
  • ECONNREFUSED 用于从本地主机到另一个本地主机的代理请求

    首先 我是角度新手 我正在遵循教程视频 https youtu be 2OHbjep WjQ一步步 我在这个问题上被困了近两周 并花了很多时间在其他类似的论坛上寻找解决方案 我意识到这是一个常见的错误 但在尝试了几十个左右的解决方案但没有成
  • 如何捕获整数(0)?

    假设我们有一个语句可以生成integer 0 e g a lt which 1 3 5 捕捉这个最安全的方法是什么 这是 R 打印零长度向量 整数一 的方式 因此您可以测试a长度为 0 R gt length a 1 0 可能值得重新考虑您
  • python 中的图谱聚类

    我想使用谱聚类在 python 中对图进行聚类 谱聚类是一种更通用的技术 不仅可以应用于图形 还可以应用于图像或任何类型的数据 但是 它被认为是一种特殊的技术graph聚类技术 遗憾的是 我无法在线找到 python 中的谱聚类图的示例 S
  • 使用 CSS 制作进度条动画

    所以 我在这个页面上有几个不同的进度条 http kaye at play goals http kaye at play goals 这是我的 HTML 和 CSS div class meter span style width 100
  • jQuery $(window).load(); 是否执行事件不会在没有 声明的页面上触发? (...在 Chrome 扩展内容脚本中)

    我正在开发一个可以操作网页的 Google Chrome 扩展 但在它部分加载 DOM 或完全加载 带有图像 之后 看来现在很多网站都使用 声明 或者它的一些变体 但许多其他人没有 问题主要是关于 HTML 文档类型 我不确定其他的 是否可
  • 在 VBA 中执行存储过程的两种方法,哪一种更好?

    背景 使用前端 Ms Access 2010 和后端 SQL Server 2008 Management Studio 为了执行存储过程 我一直使用一个相当漫长的过程 如下所示 in VBA Set Conn New ADODB conn
  • 如何使用 NSPredicate 过滤包含其他类的复合对象的 NSMutableSet?

    新手问题 我有 3 个类 其中 3 个是 NSOBject 的子类 收藏类 有 2 个属性 masterSong 作为 NSMutableSet 强 非原子 和listOfPlaylists 作为 NSMutableArray 强 非原子
  • 为什么我无法在 python 中处理键盘中断?

    我正在 Windows 上编写 python 2 6 6 代码 如下所示 try dostuff except KeyboardInterrupt print Interrupted except print Some other exce
  • 无法在 OS X (Snow Leopard) 上配置 node.js 进行 make install

    我克隆了 Node git repo 但 Node 附带的 waf 构建工具似乎不适用于最新版本的 Python configure Traceback most recent call last File Users greim node
  • 使用 Spring 具有不同视图的 JPA EntityGraph

    我有一个 Spring 应用程序 登录后 我调用 getUserByEmail 方法 我只需要用户和角色数据 根据角色 我将显示不同的视图 每个视图都有不同的数据 并且需要不同的用户子实体 似乎我必须使用不同的子实体调用 getUserBy