我试图在contentful中更新条目的字段,但每次都会抛出此错误:
. lang。IllegalArgumentException:条目必须有空格相关联的。在com.contentful.java.cma.AbsModule.getSpaceIdOrThrow (AbsModule.java: 87)在com.contentful.java.cma.ModuleEntries.update (ModuleEntries.java: 345)在com.contentful.java.cma.ModuleEntries异步14.美元方法(ModuleEntries.java: 700)
我正在构建客户端并提供spaceId:
@Bean
CMAClient cmaClient() {
return new CMAClient.Builder()
.setAccessToken(contentManagementToken)
.setSpaceId(spaceId)
.setEnvironmentId("master")
.build();
}
,这就是抛出错误的地方:
CMAEntry entry = new
CMAEntry().setSystem(sys)
.setId(response.items().get(i).id())
.setField("questionText", "en-US", question.getQuestionText()));
cmaClient.entries().update(entry);
如果我像这样设置条目的空格id:
CMAEntry entry = new CMAEntry().setSystem(sys)
.setId(response.items().get(i).id())
.setSpaceId(spaceId)
.setField("questionText", "en-US", question.getQuestionText());
cmaClient.entries().update(entry);
我得到一个不同的错误信息:
FAILED ErrorBody {details = details {errors = [Error {details =[错误]属性"space"这是不允许的。, name = unknown,....
我已经把互联网翻了个底朝天来寻找解决这个问题的方法,Java的文档没有提供解决方案。
好吧,我做错了。
我在文档的某个地方读到,当更新一个条目时,您需要为该条目提供所有字段,否则缺失的字段将被删除。考虑到这一点,我尝试使用本地条目(来自本地db)构建条目,因此缺少参数。
要更新条目,您需要通过其ID检索该条目,编辑所需的字段,然后保存它。
我所要做的就是:
final CMAEntry entry =
cmaClient.entries()
.fetchOne(response.items().get(i).id());
entry.setField("saved", "en-US", true);
cmaClient.entries().update(entry);