pgr*_*ter 6 java google-app-engine entity jpa
我正在使用JPA和Google App Engine.假设我有一个非常简单的@Entity,它由一个Key和一个String组成,仅此而已.我现在创建10000个这些实体,将它们放在一个列表中,现在想要存储所有这些实体.
如果我尝试使用EntityManager em和for循环来浏览所有实体的List ...
for(MyEntity entity : listOfAllEntities) {
em.persist(entity);
}
Run Code Online (Sandbox Code Playgroud)
..我将得到一个IllegalArgumentException:
java.lang.IllegalArgumentException:无法在单个事务中对多个实体组进行操作.
据我所知,我需要为每个persist()调用关闭并重新打开EntityManager.当然,这非常耗时.我正在尝试每天运行一次重新加载所有实体的任务.根据GAE政策,任务的超时时间为30秒.
所以另一种方法是一次只保存500个实体并多次运行任务,我认为这比实际情况要复杂得多.
这是实现我想要做的事情的唯一方法,还是我在这里遗漏了什么?
解决方案: 所有答案都指向同一方向.我只是通过创建一个"虚拟父"实体来创建一对多关系.在我的情况下,我真的不需要父母,而且在现实世界中它没有多大意义.但是在将这个虚拟实体设置为每个子实体的父实体后,我可以像以前那样完全保存它们,而不必过多关注事务.谢谢大家.
也许这过于简单化了,但您可以只添加 X 个实体作为父实体的子实体,这将导致它们位于同一实体组中。这将允许您将它们全部保留在一个事务中。基本上,在父实体和子实体(您要保留的对象)之间创建一个拥有的一对多关系。
| 归档时间: |
|
| 查看次数: |
2650 次 |
| 最近记录: |