gpt4 book ai didi

grails - 从Grails域对象内的列表中选择性地检索对象

转载 作者:行者123 更新时间:2023-12-02 13:49:31 25 4
gpt4 key购买 nike

我距离Grails开发还有2个月的时间,偶然遇到了这个挑战,我找不到使用过书籍,grails网站和论坛搜索的答案。我希望有人能帮助我。

我有2个域类-AccountPackage和AccountPackageFeatures。这个想法是一个AccountPackage(例如Gold帐户)可以具有许多功能。为了表示这一点,AccountPackage域具有一个嵌入式的AccountPackageFeatures列表。这是两个域类:

帐户包装

class AccountPackage {
String name // eg. Gold Account
boolean active // eg. true - account is active

List features = []
static hasMany = [features:AccountPackageFeature]

static constraints = { }
}

AccountPackageFeature
class AccountPackageFeature {

String featureName // eg. "Number of posts allowed"
String featureCategory // eg. "Job Posting"
String value // eg. "10"

static constraints = { }

}

数据已经保存在数据库中。在我的代码中,我检索了一个特定的AccountPackage实例,现在我想查找该AccountPackage的特定功能。我这样做的方法是从AccountPackage实例获取功能列表,然后遍历该列表,直到找到我感兴趣的适当功能。下面的代码段:
def desiredFeature = null
def desiredFeatureId = 10
AccountPackage pkg = AccountPackage.findByName("Gold Account")

def features = pkg.getFeatures()
for (feature in features) {
if (feature.id == desiredFeatureId) {
desiredFeature = feature
}
}

我知道这是非常低效的...但是在Grails中这样做的权利是什么?

grails / GORM是否提供任何内置功能来使我免于进行自定义查询?或者,例如,我是否应该向我的AccountPackage域对象添加一个名为getFeatureWithId之类的自定义方法,该方法需要一个ID,然后执行自定义查询以返回所需的功能?

任何有关最佳做法/正确方法的建议都将不胜感激。

最佳答案

试试这个

    AccountPackage.findByNameAndFeature("Gold Account",AccountPackageFeature.findById(desiredFeatureId))

要么
 AccountPackageFeature.findByIdAndAccountPackage(desiredFeatureId,AccountPackage.findByName("Gold Account"))

关于grails - 从Grails域对象内的列表中选择性地检索对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741866/

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