翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
エンティティのフィールドデータをロードする
以下の例は、エンティティのフィールドデータをロードする (ステートファブリックから読み取る) 方法を示しています。以下の例では、以下の関数を使用します。
Result<std::size_t> LoadEntityField( Transaction& txn, const Entity& entity, TypeId keyTypeId, FieldIndex index, std::int8_t** dest) noexcept;
Api::TypeId keyTypeId
パラメータは Api::BuiltinTypeId
から対応する Api::TypeId
を受け取る必要があります。適切な変換がない場合は、Api::BuiltinTypeId::Dynamic
を使用できます。
注記
FieldIndex
インデックスの値は 0 より大きい必要があります。値 0 はインデックスキー専用です (StoreEntityIndexKey()
を参照してください)。
例 プリミティブデータタイプを使用する例
namespace { constexpr Api::FieldIndex k_isTrueFieldId { /* value */ 1 }; } Result<void> LoadEntityFields( Api::Entity& entity, Transaction& transaction) { std::int8_t* dest = nullptr; WEAVERRUNTIME_TRY(Api::LoadEntityField( transaction, entity, Api::BuiltinTypeIdToTypeId( Aws::WeaverRuntime::Api::BuiltinTypeId::Bool), k_isTrueFieldId, &dest)); bool isTrueValue = *reinterpret_cast<bool*>(dest); }
例 struct を使用してデータを保持する例
namespace { constexpr Api::FieldIndex k_dataFieldId { /* value */ 1 }; } struct Data { bool boolData; float floatData; }; Result<void> LoadEntityFields( Api::Entity& entity, Transaction& transaction) { std::int8_t* dest = nullptr; WEAVERRUNTIME_TRY(Api::LoadEntityField( transaction, entity, Api::BuiltinTypeIdToTypeId( Aws::WeaverRuntime::Api::BuiltinTypeId::Dynamic), k_dataFieldId, &dest)); Data dataValue = *reinterpret_cast<Data*>(dest); }