1

2 つのエンティティが 1 対 1 の関係にあります。テストでは、2 つのエンティティを作成し、結合して保存できます。期待どおりにデータが DynamoDB に表示され、2 つが関連していることを示す適切な ID が表示されます。

次に、アイテムを取り戻そうとします。返されたアイテムの 1 つに対してフェッチ要求を実行すると、その識別子を正常にログに記録できます。ただし、暗黙的にフェッチされたと予想される関連エンティティの識別子をログに記録しようとすると、次の例外が発生します。

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 >>

関連オブジェクトにアクセスすると、DynamoDB に送信される基になるメッセージに null キーがあることがログからわかります。そのため、DynamoDB が結果を取得できないのは正しいのですが、キーが送信されていない理由がわかりません。 、DBに正しくリストされているため。

<< 編集 2 >>

1 対多の 2 つ目の関係を追加し、そこにまったく同じエンティティを追加してから、最初に 1 対多の関係にアクセスすると、期待どおりに 1 対 1 の関係を介してまったく同じオブジェクトを取得できます。. . これはバグのように思われるため、DynamoDB を 1 対 1 の関係に使用して成功した例はありますか?

4

2 に答える 2

1

DynamoDBはnullまたは空の文字列値を処理できないようです(代わりに、属性をまったく持たないようにする必要があります)。

アプリの外部で同様のクエリを実行できますか?'コンソール'で?

于 2013-01-17T15:30:46.567 に答える
0

残念ながら、これは決して解決されませんでしたが、AWS フォーラムには、興味のある方のために、より詳細なスレッドがあります - https://forums.aws.amazon.com/thread.jspa?threadID=114528&tstart=0

最終結果は、同じ関連エンティティを 1 対多の関係に含め、最初にそれにアクセスしないと、1 対 1 の関係を開始できませんでした。

于 2013-01-28T16:20:03.860 に答える