gpt4 book ai didi

grails - 如何使用动态查找器排除 GORM 的某些列?

转载 作者:行者123 更新时间:2023-12-02 03:19:15 25 4
gpt4 key购买 nike

我有following domain object :

 class DbDeployment 
{
static constraints = {
startDate(nullable: false)
endDate(nullable: true)
username(nullable: true)
fabric(nullable: false)
description(nullable: true)
status(nullable: true)
details(nullable: true)
}

static mapping = {
columns {
details type: 'text'
}
}

Date startDate = new Date()
Date endDate
String username
String fabric
String description
String status
String details // xml representation of the plan
}

我希望能够运行这样的查询:

DbDeployment.findAllByFabric("f1", params)

但我想确保不会检索details列(可能很大)。

有办法做到这一点吗?

最佳答案

选项 1:为大数据字段创建关联

来自 this answer 的一条建议是将大数据属性分解到一个单独的域中,这将导致其延迟加载。示例:

class DbDeployment {
Date startDate = new Date()
Date endDate
...
DbDeploymentDetails details
}

class DbDeploymentDetails {
String details
static belongsTo = DbDeployment
}

选项2:使用新域+映射到原始表

answer on a different question链接到 Grails mailing list question Burt Beckwith 有一个很好的答案,但 SO 答案没有给出示例。为了子孙后代,我将从邮件列表中引用他的示例并将其放在这里。

它涉及创建另一个没有大字段的域类,然后使用其静态映射闭包映射到另一个域的表。

class DbDeployment {
Date startDate = new Date()
Date endDate
...
String details
}

class SimpleDbDeployment {
Date startDate = new Date()
Date endDate
...
// do not include String details

static mapping = {
table 'db_deployment'
}
}

然后您就可以使用 SimpleDbDeployment 上的查找器:

SimpleDbDeployment.findAllByFabric('f1', params)

伯特,如果您能用邮件列表中的示例重新回答,那就太好了;我会把它从我的中删除并支持你的,因为你应得的荣誉。

关于grails - 如何使用动态查找器排除 GORM 的某些列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6914569/

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