hibernate Grails:如何将外键作为主键

f4t66c6m  于 2023-04-12  发布在  其他
关注(0)|答案(2)|浏览(140)

我有2个域名类;A和B。

class A {

    Long a_id

    static constraints = {
    }

    static mapping = {
        id name:'a_id'
    }
}

Class B {

    A a

    static constraints = {
    }

    static mapping = {
        id name:'a',  generator: 'assigned'
    }

}

在域B中,我想让'a'作为主键和外键(引用A.a_id)
上面的代码不起作用。请帮助我。

qgzx9mmu

qgzx9mmu1#

您可以使主键始终与外键相同,并将外键指向主键。

Class B {

    A a

    static mapping = {
         id generator: 'foreign', params: [property: 'a']
         a insertable: false, updateable: false , column:'id'
    }

}
g0czyy6m

g0czyy6m2#

“复合”Map不需要多个属性名。提供与另一个域类对应的单个属性名将生成正确的架构,以使用外键作为主键。
外部域必须实现Serializable才能使用复合Map

Class B implements Serializable { 
    A a

    static mapping = {
         id composite: ['a'] // Generates a column named 'a_id' and primary key index
    }
}

相关问题