Duplicate a collection of entities and persist in Hibernate/JPA
        Posted  
        
            by Michael Bavin
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Michael Bavin
        
        
        
        Published on 2009-12-29T10:13:18Z
        Indexed on 
            2010/05/01
            0:27 UTC
        
        
        Read the original article
        Hit count: 770
        
Hi, I want to duplicate a collection of entities in my database. I retreive the collection with:
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
Now i want to duplicate a list of 'categories' and persist it with EntityManager. I'm using JPA/Hibernate. UPDATE
After knowing how to detach my entities, i need to know what to detach: current code:
    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);
This throws a failed to lazily initialize a collection of role: entities.CategoryHistory.categories, no session or session was closed exception.
I think he wants to lazy load the categories again, as i have them detached. What should i do now?
© Stack Overflow or respective owner