there are two things, the side with the inverse=false owns the relation and has to have the property. the other side is not necessary and can be completely removed (mapping + java code). However, if you need to access the relationship from both end you need to define the property on the both ends. The second thing is then what inverse is doing here. Imagine this example:
Code:
Parent p1 = new Parent();
Parent p2 = new Parent();
Child c1 = new Child();
c1.setParent(p1);
p2.getChildren().add(c1);
....
save(p1);
save(p2);
The parent of c1 will be set to p1 if the relationship is owned by c1 and even though c1 is added to the children list of p2 that doesn't make a difference. I am not sure if hibernate complains for these cases.
Farzad-