Mezi objekty je asociace ManyToMany:
---------------------
@Entity
public class Page{ 

    @ManyToMany(mappedBy="pages")    
    private List<Component> components = new ArrayList();
...
}
-----------------------
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Component{

    @ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST,
CascadeType.REFRESH }) 
    @JoinTable(name = "Page_Component",
        joinColumns = [EMAIL PROTECTED](name="componentId")},
        inverseJoinColumns = [EMAIL PROTECTED](name="pageId")}
    )
    private List<Page> pages = new ArrayList();
...
}
---------------------
@Entity
public class Article extends Component{
...
}
---------------------------------

V abstraktní třídě Component jsem odstranil atribut "cascade":
@ManyToMany
    @JoinTable(name = "Page_Component",
        joinColumns = [EMAIL PROTECTED](name="componentId")},
        inverseJoinColumns = [EMAIL PROTECTED](name="pageId")}
    )
    private List<Page> pages = new ArrayList();

Nyní vše funguje. 
Myslel jsem, že atribut cascade je potřebný pro ukládání objektů ve
správném pořadí. Kdyby mi někdo vysvětlit proč se odstraněním atributu
vyřešil problém s detached entitou budu mu zavázán.

Díky 
Tomáš


Odpovedet emailem