views:

18

answers:

1

Suposse I have two classes:

class A {
Set<B> bs
}
class B {
}

This mapping:

<set name="bs" table="bs_tab" cascade = "save-update">
            <key column="a_id />
            <many-to-many column="b_id" class="B"/>
</set>

And join table like this:

bs_tab(
a_id, b_id, primary key(a_id, b_id)
)

When I add some element to bs set and then call Session.saveOrUpdate(A instance) hibernate is deleting all rows in bs_tab coresponding to B instances that were in the set before adding new element.

How can I solve this?

+2  A: 

Make sure to implement equals/hashCode correctly. I have the same kind of mapping (unidirectional many-to-many) and adding elements does not generate DELETE then INSERT SQL statements for the join table.

Pascal Thivent
That was it. In my equals and hashCode I compared Ids. After I changed it, everything is just fine. Thanks.
Konrad
@Konrad You're welcome.
Pascal Thivent