首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cumulocity :更新ManagedObjectRepresentation

Cumulocity :更新ManagedObjectRepresentation
EN

Stack Overflow用户
提问于 2018-05-24 08:33:37
回答 2查看 216关注 0票数 0

InventoryApi 结果的对象的更新功能。

在我的代码中,我成功地使用了update(),然后尝试使用更新返回的(例如,设置一些片段),再次调用InventoryApi.update()。

调用它时,我得到一个带有消息的错误代码422:

以下字段不可更新: lastUpdated

这是因为以前返回的对象具有该字段集,REST并不期望该字段具有一个值。

现在来问我的问题:在com.cumulocity.rest.representation.inventory.ManagedObjectRepresentation类中,我看到lastUpdated字段(第36行)对于某些“操作”有一个@Null注释。

我对此的松散解释是,在SDK中的某个地方,如果将该对象用作创建或更新操作的一部分,则该字段应该为null。如果是这样的话,使用具有此字段集的ManagedObjectRepresentation的上述update()调用应该不会造成问题。事实并非如此。

这个@Null注释的实际用途是什么?我是不是错误地使用了SDK?我知道使请求正常工作的一种方法就是将lastUpdated字段设置为null,但我认为这就是@Null注释的目的。

使用Java客户端库版本8.13。

EN

回答 2

Stack Overflow用户

发布于 2018-05-24 09:14:14

这些@Null注释用于验证服务器端的传入对象。正如您所写的,对于列出的操作,参数必须为null。在其他API中也使用了类似的@NotNull注释。

InventoryApi或其他Java类不计算这些注释。参数不会自动设置为空。

通常,我建议只使用要更新的属性更新对象,并排除未更改的属性。这样可以避免与同一对象上的其他并行更新发生冲突。

票数 0
EN

Stack Overflow用户

发布于 2018-05-24 09:29:00

不,您使用SDK的方式是正确的。正如您所提到的,set the lastUpdated field to null是更新managedObjectRepresentation的唯一方法。这是因为lastUpdated时间只是由累积量来设置的,而不是由用户(开发人员)设置的(我认为用户可能会给出太远的日期时间,这就是他们不允许设置更新时间的原因)。

在回答你的问题时:

更新托管对象表示的方法是: Conside mo是managedObject表示

代码语言:javascript
复制
        mo.setName("String Name");//you can set whatever you want
        mo.setLastUpdated(null);// without lastupdated you cannot update mo
        platform.getInventoryApi().update(mo);

而use @NULL注释是:

在本例中,您将LastUpdated设置为null,这将抛出空指针异常以捕获异常(克服异常) @null注释。

有关@null 看这里的更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50504632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档