0

假设我有一个域类branch,它有几个成员:

…
static hasMany = [ members:Member ];
…

现在假设我想让该分支的成员数量随时可用,让它显示在listandview操作中,所以也许将该信息存储到域类本身的变量中是个好主意?

…
Integer memberCount = members.size();
static constraints = {
    memberCount(editable:false);
}
…

(这是正确的语法吗?) 编辑:这不是正确的语法。我无法评估成员列表的大小,因为它还不存在,并且 grails 会抱怨 size() 不适用于空对象。我还能尝试什么?

但是,由于memberCount现在是域类中的一个变量,因此可以在创建时为其分配一个值Branch(这是违反直觉的),并且一旦添加了新变量,它就不会自动更新Member

当然可以以不同的方式达到预期的结果。我可以在目录中操作view.gspand ,在那里添加一些额外的 s 等等。但这对我来说似乎不是很优雅。list.gsp/Branch<td>

基本上,我认为我正在寻找某种方法来告诉 grails 某个变量是派生的,用户不应该设置,而是在必要时更新。有没有这样的方法?

4

1 回答 1

2

您可以将不希望保留的任何属性添加到transients静态列表中:

static transients = ['memberCount']

请参阅手册中的此页

此外,这个 StackOverflow 问题也回答了同样的问题


此外,执行派生属性的更好方法可能是使用GORM 的派生属性功能

于 2011-09-27T09:25:51.613 回答