Дублируйте коллекцию сущностей и сохраните их в Hibernate / JPA
Я хочу продублировать коллекцию объектов в моей базе данных. Я получаю коллекцию с:
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
Теперь я хочу продублировать список «категорий» и сохранить его с помощью EntityManager. Я использую JPA / Hibernate.ОБНОВИТЬ
Зная, как отсоединить мои объекты, мне нужно знать, что отсоединять: текущий код:
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);
Это кидаетfailed to lazily initialize a collection of role: entities.CategoryHistory.categories, no session or session was closed
исключение.
Я думаю, что он хочет лениво загрузить категории снова, так как я отключил их. Что мне теперь делать?