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。