在Parse SDK Android中查询具有id为null的未保存固定对象的本地数据存储

在Parse SDK Android中查询具有id为null的未保存固定对象的本地数据存储,android,parse-platform,android-room,parse-server,parse-android-sdk,Android,Parse Platform,Android Room,Parse Server,Parse Android Sdk,我正在使用android的Parse sdk 在脱机模式下, 我创建了一些解析对象,并使用 ... ParseObject.pinAll(cartItems) orderObject.pin() //orderObject.objectId() returns null! ... 稍后,当我在localDatastore中查询cartItems时,我使用 ... query.whereEqualTo("order", orderObject);

我正在使用android的Parse sdk

在脱机模式下, 我创建了一些解析对象,并使用

  ...
  ParseObject.pinAll(cartItems)
  orderObject.pin()       //orderObject.objectId() returns null!
  ...
稍后,当我在localDatastore中查询cartItems时,我使用

    ...
    query.whereEqualTo("order", orderObject);
    query.fromLocalDatastore().ignoreACLs();
    ...
但是查询没有给出结果,可能是因为orderObject的objectId为null。

是否有任何方法可以成功执行此查询

如果parse无法做到这一点,我应该使用Room database离线存储数据,还是有更好的替代方案

感谢您的帮助

编辑:

有两个子类

Order extends ParseObject 
OrderIte extends ParseObject
我创建了一些OrderItem-s和一个订单。 我将订单指针放在OrderItem-s中 把它们都钉住

稍后在本地数据存储中查询OrderItem类时 我要检索特定订单的OrdeItem-s。 所以在OrderItem查询中,我设置了

query.equaTo("order",myOrder.getObjectId())
但由于设备一直处于脱机状态
myOrder.getObjectId()
返回null,查询无法找到的orderItems 迈奥德

null,因为对象脱机存储在localdatastore中


这会导致基本查询失败,并使LocalDatastore变得不那么有用。

对我来说,一个可行的解决方案是:

在OrderItem-s中设置订单指针时

而不是

orderItem.put("order",myOrderObject)
orderItemquery.equaTo("order",myOrder.getObjectId())
我用

String randomId = generateRandomString()
myOrderObject.put("temp_orderOfflineId",randomId)
orderItem.put("order_id",randomId )
还有疑问 而不是

orderItem.put("order",myOrderObject)
orderItemquery.equaTo("order",myOrder.getObjectId())
我用

我使用这种方法 这使得与服务器的同步变得非常困难


等待更好的解决方案

您要查询的类是什么?它与订单有什么关系?您是否也锁定了此类的对象?问题已更新。请再次检查您是否尝试了
query.equaTo(“order”,myOrder)
而不是
query.equaTo(“order”,myOrder.getObjectId())
?正如您在第一个链接示例中看到的那样,这应该是正确的方法。代码可能有点不同。但是我按照文档做了。我确信代码中没有错误。这取决于objectId为脱机objectId提供null。您尝试过我的建议吗?