Я должен сначала построить структуру, а после этого сохранить все.
Order ord = New ord("my first order");
Item item = New Item("tv",10);
item.setOrder(ord);
Set<Item> items= new HashSet<Item>();
items.add(item);
ord.setItems(items);
em.persist(ord);
Таким образом, вы сохраняете все дерево за один вызов, и очистка не требуется.
В хорошем объекте design, вы должны использовать способ, описанный duffymo, для подключения ваших объектов.
Я думаю, вы должны делать все это в транзакционном контексте и позволить ему решать эти проблемы за вас.
Вам необходимо встроить двунаправленную связь в объекты:
class Parent
{
private List<Child> children;
public boolean addChild(Child c)
{
c.setParent(this); // this is the key piece
return this.children.add(c);
}
}
class Child
{
private Parent parent;
public void setParent(Parent p)
{
this.parent = p;
}
}