Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Objectify在Google云平台的多个实体上使用事务?_Java_Google Cloud Platform_Transactions_Google Cloud Datastore_Objectify - Fatal编程技术网

Java 如何使用Objectify在Google云平台的多个实体上使用事务?

Java 如何使用Objectify在Google云平台的多个实体上使用事务?,java,google-cloud-platform,transactions,google-cloud-datastore,objectify,Java,Google Cloud Platform,Transactions,Google Cloud Datastore,Objectify,我有Entity1和Entity2,他们的经理分别是NewQManager和QAManager以及服务QAService和NewQService。 我想做的是:我想在一个事务中删除Entity1中的问题并将其添加到Entity2,为此,我在AbstractTransaction类中使用Objectify服务,该类由QAService扩展。但是,我得到以下错误: java.lang.IllegalArgumentException: operating on too many entity gro

我有Entity1和Entity2,他们的经理分别是NewQManager和QAManager以及服务QAService和NewQService。 我想做的是:我想在一个事务中删除Entity1中的问题并将其添加到Entity2,为此,我在AbstractTransaction类中使用Objectify服务,该类由QAService扩展。但是,我得到以下错误:

java.lang.IllegalArgumentException: operating on too many entity groups in a single transaction.
QuestionManager.java

QAService.getInstance.implementTransaction 回购->{ NewQManager.getInstance.removequestion; QAManager.getInstance.addOrUpdateItemquestion; 返回true; }; QAService.java

公共类QAService扩展了AbstractTransaction{ 公共静态QAService getInstance{ 如果实例!=null 返回实例; 实例=新的QAService; 返回实例; } } AbstractTransaction.java

公共类抽象事务{ 公共实现TransactionFunction操作{ 返回y.transact->operations.applythis; } 公共T保存实体{ of y.save.entityentity.now; 返回实体; } } 错误


所有这些抽象事务看起来都很奇怪,额外的复杂性可能隐藏了您正在做的事情

数据存储的一个基本限制是在一个事务中只能登记25个实体组。不知何故,你是这样做的,可能是通过@Load Group——从你发布的内容中无法判断

解决方案是在事务中加载更少的内容

    java.lang.IllegalArgumentException: operating on too many entity groups in a single transaction.
        at com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:52)
        at com.google.appengine.api.datastore.DatastoreApiHelper$1.convertException(DatastoreApiHelper.java:135)
        at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:109)
        at com.google.appengine.api.datastore.Batcher$ReorderingMultiFuture.get(Batcher.java:115)
        at com.google.appengine.api.datastore.FutureHelper$TxnAwareFuture.get(FutureHelper.java:186)
        at com.googlecode.objectify.cache.TriggerFuture.get(TriggerFuture.java:100)
        at com.googlecode.objectify.impl.ResultAdapter.now(ResultAdapter.java:34)
        at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:22)
        at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:10)
        at com.googlecode.objectify.util.ResultTranslator.nowUncached(ResultTranslator.java:21)
        at com.googlecode.objectify.util.ResultCache.now(ResultCache.java:30)
        at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:22)
        at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:10)
        at com.googlecode.objectify.util.ResultTranslator.nowUncached(ResultTranslator.java:21)
        at com.googlecode.objectify.util.ResultCache.now(ResultCache.java:30)
com.vivoiz.healofy.backend.commonServices.services.AbstractTransaction.save(AbstractTransaction.java:44)