0

我在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)

你有什么想法吗?

谢谢你 : )

4

0 回答 0