Grails 我可以确定何时添加域类吗?

Grails 我可以确定何时添加域类吗?,grails,gorm,grails-2.0,Grails,Gorm,Grails 2.0,如果我有两个(或更多)域类,其中包含许多C,如何确定是否添加了C的实体 class A { String name static hasMany = [cs: C] class B { String name static hasMany = [cs: C] } class C { String someProperty } // In CController add Action //... genericInstance.addToCs(cInsta

如果我有两个(或更多)域类,其中包含许多
C
,如何确定是否添加了
C
的实体

class A {
    String name
    static hasMany = [cs: C]
class B {
    String name
    static hasMany = [cs: C]
}
class C {
    String someProperty
}

// In CController add Action
//...
genericInstance.addToCs(cInstance)

我在寻找更多我能处理的事件
CController
用于
A
B
的内联表单,但我需要运行两个不同的进程,这取决于添加到
C
的域,既然A和B具有相同的属性,为什么不将它们合并到一个域中呢

我建议这样做:

class AB {
    char type
    String name
    static hasMany = [cs: C]

    static constraints = {
        type inList:['A','B']     //you can extend to 'C', 'D'... easily with this
    }
}
class C {
    String someProperty
}
在控制器中,您可以执行以下操作:

abInstance.addToCs(cInstance)
def domainTag = abInstance.type

那么domainTag就是您想要的。

您可以在类
A
B
中编写自己的
addToCs
方法/闭包

class A {
    String name
    static hasMany = [cs: C]
    def addToCs = {
        // Do what you want with your value
        cs.add(C)
    }
}
注意默认情况下发生的情况
addToCs

>(CaseNo.Case.cs)中是否尝试编写自己的<代码> AdtoCtoS/<代码>方法/闭包在类<代码> C/<代码>?@ ISAMMOC中,如果您重新编写它,我会考虑您的答案。不,因为实际上,代码< > < <代码> >代码> b/COD>是两个完全不同的域。我的例子是伪代码。