Konrad
Konrad

Reputation: 41

Why is hibernate deleting rows from join table when adding element to set mapping many-to-many?

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?

Upvotes: 4

Views: 1795

Answers (1)

Pascal Thivent
Pascal Thivent

Reputation: 570365

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.

Upvotes: 4

Related Questions