Я использую JPA с Google App Engine.Допустим, у меня есть очень простая @Entity, состоящая из ключа и строки, и ничего более.Теперь я создаю 10000 таких сущностей, помещаю их в список и хочу сохранить их все.
Если я попытаюсь использовать EntityManager em и цикл for, чтобы пройти через Список всех моих сущностей ...
for(MyEntity entity : listOfAllEntities) {
em.persist(entity);
}
.. Я получу исключение IllegalArgumentException:
java.lang.IllegalArgumentException: не может работатьдля нескольких групп объектов в одной транзакции.
Насколько я понимаю, мне нужно закрыть и снова открыть EntityManager для каждого вызова persist ().Конечно, это очень много времени.Я пытаюсь запустить задачу один раз в день, которая перезагружает все сущности.Согласно политике GAE, время ожидания задачи составляет 30 секунд.
Таким образом, альтернативой является сохранение только 500 объектов одновременно и многократное выполнение задачи, которая, на мой взгляд, более сложна, чем должна быть.
Является ли это единственным способом достижения того, чтоЯ пытаюсь сделать или я что-то здесь упускаю?
Решение: Все ответы указывают в одном направлении.Я просто создал отношение «один ко многим», создав сущность «фиктивного родителя».Мне действительно не нужен родитель в моем случае, и это не имеет большого смысла в реальном мире, так сказать.Но после установки этого фиктивного объекта в качестве родительского для каждого из дочерних объектов я могу сохранить их точно так же, как и раньше, не слишком заботясь о транзакциях.Спасибо всем.