与Grails的零对多关系?

时间:2011-07-14 17:32:53

标签: grails groovy class-design gorm

我有一个tRNA类,可能有也可能没有相关的grRNA,但会与cRNA相关。

所以我可以建立这种关系:
tRNA - > grRNA - >的cRNA

或者这种关系(在这种情况下我们没有grRNA数据):
tRNA - >的cRNA

通过Grails / Gorm实现这种关系(我们有时可能没有grRNA)的最佳方法是什么? 最佳域名设计?

1 个答案:

答案 0 :(得分:1)

您可以将grRNA和cRNA作为亲本的亚类,其中tRNA与亲本关联,grRN与cRNA相关联。

在数据库表中,您需要class列来定义GORM对象中的类(discriminator)。

修改: 类似的东西:

class GenericRna {
    //Properties
    //Assuming this is mapped to a database table as well, you'd need:
    static mapping = {
        table 'generic_rna'
        discriminator column: 'class'
    }
}

class CRna extends GenericRna {
    //Properties
    discriminator value: 'CRna'
}

class GrRna extends GenericRna {
    //Properties
    static hasMany = [cRnas: CRna]
    discriminator value: 'GrRna'
}

class TRna {
    static hasMany = [genericRnas: GenericRna]
}

从技术上讲,我相信如果你使用'class'作为你的鉴别器列名,并且使用类名作为值,你就不需要'discriminator'行。