Grails:域类中的派生字段

Grails:域类中的派生字段,grails,gorm,derived,Grails,Gorm,Derived,假设我有一个域类分支,它有几个成员: … static hasMany = [ members:Member ]; … 现在假设我想让该分支的成员数量随时可用,并将其显示在列表和视图操作中,那么将该信息存储到域类本身的变量中可能是个好主意 … Integer memberCount = members.size(); static constraints = { memberCount(editable:false); } … (这是正确的语法吗?编辑:这不是正确的语法。我无法评估成

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

…
static hasMany = [ members:Member ];
…
现在假设我想让该分支的成员数量随时可用,并将其显示在
列表
视图
操作中,那么将该信息存储到域类本身的变量中可能是个好主意

…
Integer memberCount = members.size();
static constraints = {
    memberCount(editable:false);
}
…
(这是正确的语法吗?编辑:这不是正确的语法。我无法评估成员列表的大小,因为它还不存在,grails会抱怨size()不适用于空对象。我还能试什么

但是,由于
memberCount
现在是域类中的一个变量,因此可以在创建
分支时为其赋值(这与直觉相反),并且在添加新
成员后不会自动更新

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


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

您可以将任何不希望持久化的属性添加到
瞬态
静态列表中:

static transients = ['memberCount']

而且



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

如果
memberCount
属性在
瞬态
列表中,它将不会正确地存储在数据库中。但一旦添加了新的
成员
,它会更新吗?在我看来,我将不得不使用您链接的GORM的派生属性feauture。