无法使用核心数据从DynamoDB中提取相关项目

我有两个实体,两者之间有一对一的关系。 在testing中,我可以创build这两个实体,join并保存它们。 数据按预期显示在DynamoDB中,并显示相应的ID以显示两者是相关的。

然后我试图找回物品。 我对返回的其中一个项目执行获取请求,并且可以成功logging它的标识符。 但是,如果我试图logging相关的实体的标识符,我期望已经隐式获取我得到以下exception:

2013-01-17 15:00:13.936 DJ[10995:c07] DynamoDBResponse.m|-[DynamoDBResponse connectionDidFinishLoading:]|62|Response Body: {"__type":"com.amazon.coral.validate#ValidationException","message":"1 validation error detected: Value null at 'key.hashKeyElement' failed to satisfy constraint: Member must not be null"} 2013-01-17 15:00:13.936 DJ[10995:c07] DynamoDBResponse.m|-[DynamoDBResponse connectionDidFinishLoading:]|92|Returned CRC32: 650439770, Calculated CRC32: 650439770 2013-01-17 15:00:13.937 DJ[10995:c07] AmazonRequestDelegate.m|-[AmazonRequestDelegate request:didFailWithServiceException:]|74|didFailWithServiceException 2013-01-17 15:00:13.937 DJ[10995:c07] DynamoDBWebServiceClient.m|-[DynamoDBWebServiceClient invoke:rawRequest:unmarshallerDelegate:]|131|Response Status Code : 400 2013-01-17 15:00:13.938 DJ[10995:c07] AmazonErrorHandler.m|+[AmazonErrorHandler errorFromExceptionWithThrowsExceptionOption:]|51|WARNING: An exception was thrown. Please call [AmazonErrorHandler shouldNotThrowExceptions] to change this behavior. 2013-01-17 15:00:13.939 DJ[10995:c07] *** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x7540100 <x-coredata://279744BC-1B25-4170-AF2C-83676954BC3D-10995-00005B7C38D21AFA/Venue/p(null)>'' *** First throw call stack: (0x1655012 0x147ae7e 0xe6ed8 0xe6887 0xe64c1 0xe6336 0x10b000 0x260c 0x1edc 0x4a3817 0x4a3882 0x3f2a25 0x3f2dbf 0x3f2f55 0x3fbf67 0x3bffcc 0x3c0fab 0x3d2315 0x3d324b 0x3c4cf8 0x24a2df9 0x24a2ad0 0x15cabf5 0x15ca962 0x15fbbb6 0x15faf44 0x15fae1b 0x3c07da 0x3c265c 0x282d 0x1d15) libc++abi.dylib: terminate called throwing an exception 

我试过设置:

 [request setReturnsObjectsAsFaults:NO]; 

但结果没有差别。

在初始抓取之后,我没有对数据执行任何更新。 我错过了什么吗?

“编辑1”

从日志logging中我可以看到,访问相关对象时,发送到DynamoDB的基础消息具有空键,所以DynamoDB无法获取结果是正确的,但我不明白为什么键未被传输,因为它在数据库中正确列出。

“编辑2”

如果我添加了一对多的第二个关系,并添加完全相同的实体,然后首先访问一对多的关系,然后我可以通过一对一的关系检索完全相同的对象。 。 。 有没有人有一个例子,他们成功地使用DynamoDB的一对一的关系,因为这看起来像一个错误?

看来DynamoDB不能处理空值或空string值(相反,你不应该有一个属性),这可能会击中你。

你能否在你的应用程序之外做类似的查询? 在'控制台'?

恐怕这永远都不会解决,但如果有人感兴趣,AWS论坛上有更详细的线程 – https://forums.aws.amazon.com/thread.jspa?threadID=114528&tstart=0

最终的结果是,我无法得到一对一的关系来触发,没有在一对多的关系中包含相同的相关实体,并且首先访问它们,尽pipe在备份到SqlLite时完全相同的关系完全按照预期工作。