如何优化这个 GORM 查询

2024-03-08

我有一个查询,它进行 2 个数据库查询。我是 GORM 的新手,不知道如何使用条件、where 子句或其他内容将其优化为 1 个查询。我也使用 springsecurity 并有一个用于登录安全的 User 类。我有一个带有 User 对象的 Profile 类:

class Profile {
   User user
}

在我的控制器中,会话存储用户 ID。当我想加载配置文件以更新它时,我的代码当前是:

def user = User.get(springSecurityService.principal.id) // 1st db query
def domainObject = Profile.findByUser(user) // 2nd db query

我通过反复试验尝试了一些查询变体,但似乎找不到一个不会生成错误的查询变体。这看起来似乎是微不足道的。伪查询将是“获取具有此用户 ID 的 profile.user 的配置文件”。


您可以使用load避免第一次数据库查询的方法:

def user = User.load(springSecurityService.principal.id)
def domainObject = Profile.findByUser(user)

这有效是因为load直到您访问除id,但这就是所需要的全部findByUser因为它是外键。

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

如何优化这个 GORM 查询 的相关文章

随机推荐

  • 实体框架代码优先开发资源和文档

    我知道 EF4 仍在开发中 但作为该主题的新手 我需要使用 EF 4 代码优先方法的文档 教程等 所有信息都位于 EF 4 团队博客中 但分散在不同的帖子中 全面覆盖真的很好 有人知道有这样一个地方吗 迄今为止我见过的最好的在线资源是斯科特
  • 如何禁用按 Enter 键时的自动提交行为?

    我想根据我输入的输入文本按 Enter 键转到 p2 htm 或 p3 htm 我还想按 Submit1 按钮手动提醒 no1 它在 FireFox 中工作 但在 IE6 中 当我按 Enter 键时 它将提交提交按钮 我怎样才能在 IE
  • 使用 Google Cloud + CloudFlare 创建子域

    我在 CloudFlare 上有一个域名 bar com 该域名链接到 Google Cloud 上托管的网站 我可以在 CloudFlare 上为子域名 foo 创建新的 A 记录 但如何将其映射到 Google Cloud 上的 bar
  • 将 LinearSVC 的决策函数转换为概率(Scikit learn python)

    我使用 scikit learn LinearSVC 中的线性 SVM 来解决二元分类问题 我知道 LinearSVC 可以为我提供预测标签和决策分数 但我想要概率估计 对标签的置信度 由于速度原因 我想继续使用 LinearSVC 与具有
  • python - 获取当前模块中所有函数的列表。检查当前模块不起作用?

    我有以下代码 fset obj for name obj in inspect getmembers sys modules name if inspect isfunction obj def func num pass if name
  • 使用 d3-cloud 动态调整大小的词云

    我正在通过修改以下代码来创建词云 https github com jasondavies d3 cloud https github com jasondavies d3 cloud 我可以通过修改 w h 来更改大小 但我想随着浏览器窗
  • ModelState.AddModelError 到字段的特定 ValidationMessageFor?

    我有以下代码来生成 html 输入和验证消息 Html ValidationSummary false div class col md 10 Html TextBoxFor model gt model ImageUpload new t
  • 具有多个参数的 MapStruct QualifiedByName

    我遇到过一种情况 我的映射方法有 3 个参数 并且所有这三个参数都用于派生目标类型的属性之一 我在接口中创建了一个默认映射方法 保留了派生属性的逻辑 现在为了调用此方法 我可以使用expression java method call he
  • 内存泄漏是否正常? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否可以接受内存泄漏 http en wikipedia org wiki Memory leak在您的 C 或 C 应用程序中 如果您分配一些
  • evp_crypt 在 c 中的 for 循环中不起作用

    我是新来的 如果我做错了什么 请原谅 我尝试使用加密字符串创建一个数组 我使用 EVP API 进行加密 这工作正常 但是当我尝试在 foo 循环中使用加密函数时 控制台没有给我任何信息 这是我的加密函数 char encrypt char
  • 如何在 Python 中压缩字符串

    我正在制作一个 python 脚本 将字符串发送到 Web 服务 在 C 中 我需要压缩或压缩这个字符串 因为带宽和 MB 数据是有限的 是的 大写 因为它非常有限 我正在考虑将其转换为文件 然后压缩该文件 但我正在寻找一种直接压缩字符串的
  • 为什么 Backbone Collection fetch 不返回承诺

    下面的示例代码运行良好 Auth controller prototype isLogged function Check if the user is authenticated var getAuthStatus this auth m
  • IE10 中本地存储的访问被拒绝

    昨天我安装了 Windows 8 现在试图了解为什么我在访问本地存储时收到 访问被拒绝 消息 该页面与浏览器 http localhost 位于同一台 PC 上 我的感觉是IE 10中的一项安全设置是错误的 但我还没弄清楚是哪一项 触发错误
  • 将 html 附加到指令中的元素并创建一个与其交互的本地函数

    在我的 AngularJS 应用程序中 我到处都有不同的复杂输入 例如 某些输入具有使用 Google Places 自动完成功能或 Twitter Bootstrap 自动完成功能的指令 我正在寻找一种方法来制作一个指令 当我们添加一些文
  • 使用箭头键浏览 JButton

    我做了一个JButton数组 代表卡片 共有 16 张 4 4 我怎样才能在其中浏览JButton使用键盘上的箭头而不是鼠标 我如何 单击 JButton按 ENTER 键而不是单击鼠标 也许有另一种方法可以做到这一点而不是使用JButto
  • 将 root 中的默认 python 更改为 anaconda 的 python

    我已经在我的系统中安装了 python 2 7 并且还安装了 Anaconda 现在 我正在使用 python 的 anaconda 它运行得很好 不幸的是 我想使用anaconda的python来使用root运行 问题是我无法更改 roo
  • 仅允许接下来的 5 个工作日 jquery datepicker

    我有一个日期选择器 用于设置约会 唯一的问题是老板希望预约日期仅限于接下来的 5 个工作日 我知道如何禁用周末 但我有点不清楚如何做到这一点 以便如果我选择周三 它可以让我选择下周三之前的日期并考虑周末 有人对如何实现这一目标有任何想法吗
  • 无法使用完成处理程序进行抛出操作

    我正在尝试添加一个throws使用完成处理程序添加到我现有的函数 但我不断收到警告说no calls throwing functions occur within try expression 在我抛出错误的部分中 我收到一条错误消息 从
  • 使用 UIBezierPath 绘制圆角

    我有一个设计元素无法弄清楚 希望有人能够指出我正确的方向 我试图构建的元素是这样的 实际上 它是一个圆角矩形 在左侧 顶部和右侧都有描边 底部应该没有描边 我尝试过使用以下代码 Create the rounded rectangle le
  • 如何优化这个 GORM 查询

    我有一个查询 它进行 2 个数据库查询 我是 GORM 的新手 不知道如何使用条件 where 子句或其他内容将其优化为 1 个查询 我也使用 springsecurity 并有一个用于登录安全的 User 类 我有一个带有 User 对象