Dupliquer une collection d'entités et de persister dans Hibernate/JPA

Je veux dupliquer une collection d'entités dans ma base de données.
J'ai récupérer la collection:

CategoryHistory chNew = new CategoryHistory();
CategoryHistory chLast =  (CategoryHistory)em.createQuery("SELECT ch from CategoryHistory ch WHERE ch.date = MAX(date)").getSingleResult;
List<Category> categories = chLast.getCategories();
chNew.addCategories(categories)//Should be a copy of the categories: OneToMany

Maintenant, je veux dupliquer une liste des "catégories" et persister avec l'EntityManager.
Je suis en utilisant JPA/Hibernate.
Mise à JOUR

Après avoir su comment détacher mes entités, j'ai besoin de savoir ce que le détacher:
code actuel:

    CategoryHistory chLast =  (CategoryHistory)em.createQuery("SELECT ch from CategoryHistory ch WHERE ch.date=(SELECT MAX(date) from CategoryHistory)").getSingleResult();
    Set<Category> categories =chLast.getCategories();

    //detach
    org.hibernate.Session session = ((org.hibernate.ejb.EntityManagerImpl) em.getDelegate()).getSession();
    session.evict(chLast);//detaches also its child-entities?       

    //set the realations
    chNew.setCategories(categories);
    for (Category category : categories) {
        category.setCategoryHistory(chNew);
    }
    //set now create date
    chNew.setDate(Calendar.getInstance().getTime());

    //persist
    em.persist(chNew);

Cela jette un failed to lazily initialize a collection of role: entities.CategoryHistory.categories, no session or session was closed exception.

Je pense qu'il veut un chargement différé des catégories de nouveau, puisque je les ai détachés. Que dois-je faire maintenant?

dans ce cas, qu'entendez-vous par "copie"? Et pourquoi ne pas ce travail pour vous?

OriginalL'auteur Michael Bavin | 2009-12-29