我有一个查询,它进行 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(使用前将#替换为@)