Hibernate 避免grails中的连接表

Hibernate 避免grails中的连接表,hibernate,grails,groovy,gorm,Hibernate,Grails,Groovy,Gorm,考虑到以下简化情况: 我有一个产品可以有几个属性,这些属性的值取决于国家 当我以如下所示的标准方式对属性域类进行建模时。这意味着一个属性可以具有依赖于某个国家的值,并且一个值可以属于不同的属性。n:m关系产生一个单独的联接表 class Attribute { String id String name static hasMany = [attributeValues: AttributeValue] static mapping = {

考虑到以下简化情况: 我有一个产品可以有几个属性,这些属性的值取决于国家

当我以如下所示的标准方式对属性域类进行建模时。这意味着一个属性可以具有依赖于某个国家的值,并且一个值可以属于不同的属性。n:m关系产生一个单独的联接表

class Attribute  {
    String id
    String name

    static hasMany = [attributeValues: AttributeValue]

    static mapping = {
        attributeValues joinTable: [name: 'attribute_values', key: 'attribute_id']
    }
}


class AttributeValue {
    String id
    Locale language
    String value
}
现在的问题是,是否有一种方法可以在没有联接表的情况下在GORM中对此进行建模

使用SQL native就没有问题了。在数据库中,这将导致如下所示的结构。 联接应该从列属性.attribute\u键转到列属性\u值.attribute\u键

数据库中的联接表

create view JOIN_ATTRIBUTE_VALUE_V as
(!!the sql u select upown!!)
然后创建grails.domain类

class joinAttributeValueV {
    String id
    String attributeKey
    Locale language
    String value

    static mapping = {
        table 'JOIN_ATTRIBUTE_VALUE_V'
        id            column:"id" ,comment:""
        attributeKey  column:"ATTRIBUTE_KEY" ,comment:""
        language      column:"LANGUAGE" ,comment:""
        value         column:"VALUE" ,comment:""
    }
}
使用GORM获取域类