Grails问题在多对多关系的连接表中持久保存数据

时间:2010-07-27 17:40:52

标签: grails groovy persistence

我遇到了持久存在域对象的问题,其中我与连接表有多对多的关系

class A{

String name
static hasMany = [bs:B]

}


class B{

String surname
static belongsTo=A
static hasMany=[as:A]

}

A a = new A(name:'Test')
B b = new B(surname:'user')

a.addToBs(b)
a.save(flush:true)

那么我期望看到的是以下

Table A                      Table AB                  Table B
id    name                 a_id     b_id               id   surname
1      Test                 1         1                 1    User

但是,数据仅存在于表A中。

有人知道我做错了吗?

感谢

2 个答案:

答案 0 :(得分:0)

我发现这个链接显示了一种清晰的方式来映射多对多关系

http://chrisbroadfoot.id.au/2008/07/19/many-to-many-relationship-mapping-with-gorm-grails

我仍然无法按照我现在想要的方式工作

答案 1 :(得分:0)

我尝试模仿你的代码和级联作品给我。

A类:

package searcher

class A {
    String name
    static hasMany = [bs:B]

    static constraints = {
    }

    public String toString() {
        def s = "Name: $name\n Bs: "
        bs.each {
            s = "$s $it "
        }
        return s
    }
}

B组:

package searcher

class B {

    String surname
    static belongsTo = A
    static hasMany = [as:A]

    static constraints = {
    }
}

控制器来源:

package searcher

class ManyController {

    def ab = {

        A a = new A(name:'Test')
        B b = new B(surname:'user')
        a.addToBs(b)
        a.save(flush:true)

        render A.list()
    }
}

产生输出:

  

[姓名:测试B:搜索者:B:1]

我没有遇到你所遇到的问题,但我确实遇到了一些初步问题,这是通过grails clean修复的。您是否尝试过各种数据库配置?我只是使用内存中的hsqldb设置为create-drop。如果你正在使用我碰巧安装的DBMS,我会尝试将它指向另一个数据库并给它一个旋转。