我遇到了持久存在域对象的问题,其中我与连接表有多对多的关系
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中。
有人知道我做错了吗?
感谢
答案 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,我会尝试将它指向另一个数据库并给它一个旋转。