我在A类和B类之间有一个多对多的关系,A拥有这个关系。所以 A 有责任级联保存 B 并更新连接表。
伪代码:
A {
hasMany = [bCollection : B]
}
B {
hasMany = [aCollection : A]
belongsTo = A
}
我有一个批量插入循环
// transaction begin and hibernate session opened
for(int i in 1..10){
b = new B(...)
a.addToBCollection(b)
a.save(flush:true)
...
}
//transaction committed
所有十个 b 实例都是从 A 到 B 级联保存的,每个 b 实例都有一个生成的 id (1001 ~ 1011)
table b
1001 b1
1002 b2
1003 b3
...
奇怪的是连接表中只有一条记录,它是最后一个被考虑的 b 实例,这意味着在连接表中我有一条记录:
join table a_b
(a.id,1011)
你有什么想法吗?
谢谢你 : )