2013-06-24 7 views
0

Мне нужна массовая вставка списка в базе данных, используя в JPA, где у меня есть список объектов размером около 35, я хочу вставить как объемный вариант, есть ли какие-либо опции в JPA?Массовая вставка в JPA eclipselink

Я попытался Дис кодирование для массовой вставки

EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
EntityManager em = factory.createEntityManager(); 

try { 
     em.getTransaction().begin(); 

     for (int i = 0; i < batchList.size(); i++) { 
      // Getting the object from the list by using loop 
      BatchInfo batchInfo = batchList.get(i); 
      em.persist(batchInfo); 
     } 

     em.getTransaction().commit(); 
} 
catch(Exception e){} 

, но я получаю исключение, как это,

Во время синхронизации новый объект был найден через отношения , который не был отмечен каскад PERSIST: [email protected]

+0

Возможный дубликат [Удаление строк в пакете с использованием JPA EntityManager] (http://stackoverflow.com/questions/16501338/delete-rows-in-a-batch-using-jpa-entitymanager) – Lion

ответ

0

Ошибка указывает, что один из ваших объектов ссылается на другой новый объект, который еще не был сохранен.

Отметить связь как каскад, перенести или перенести связанный объект сперва.

Вы также можете установить свойство единицы продолжительности, "eclipselink.persistence-context.commit-without-persist-rules" = "true", который всегда будет каскадом сохраняться, когда это необходимо.