ZJ,
now I understand what do you want. There is nothing wrong with my example, because in my example there isn't a business rule that indicate that part1 should be a child of container. I didn't thought in a bidirectional association.
But now, I understand that you want a bidirectional association. But your source doesn't represent this situation.
If you want a bidirectional association, you must change your code.
Container 1 -------------------- * Part
In this case, the Container class should have a set of Parts, as you done. But, the Part should have a reference to Container. The reference should be on Part and not on a superclass, because you want a bidirectional association.
In you code, you must force the values too.
Code:
public void addPart(Part part){
part.setContainer(this);
parts.add(part);
}