如何从dynamodb表中获取继承的对象?

rlcwz9us  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(271)

我在dynamodb有一张table叫 Transaction . 我创建了一个名为transaction的类以及从中继承的类(sell、buy),这些类有一些附加字段。

  1. @DynamoDBTable(tableName = "transaction")
  2. public class Transaction implements Serializable {
  3. @DynamoDBHashKey(attributeName = "Id")
  4. @DynamoDBAutoGeneratedKey
  5. private TransactionId transactionId;
  6. }
  7. public class Sell extends Transaction {
  8. //...some additional fields
  9. }
  10. public class Buy extends Transaction {
  11. //...some additional fields
  12. }

我在事务表中存储了许多不同类型的记录。当我想要获得所有事务时,问题就出现了。
我是否可以从事务表中获取所有项并将它们强制转换为从事务继承的类?dynamodb返回给我事务类对象,但是跳过了子类特有的字段,所以我不能轻易地将其转换为sell/buy。
到目前为止,我已经使用dynamodbmapper实现了这一点:

  1. DynamoDBQueryExpression<Transaction> queryExpression = new DynamoDBQueryExpression<Transaction>()
  2. .withIndexName(indexName)
  3. .withConsistentRead(false)
  4. .withScanIndexForward(false)
  5. .withKeyConditionExpression(keyConditionBuilder.toString())
  6. .withExpressionAttributeNames(expressionAttributesNames)
  7. .withExpressionAttributeValues(expressionAttributeValues);
  8. QueryResultPage<Transaction> pageResult = dynamoDbMapper.queryPage(Transaction.class, queryExpression);

我知道我可以单独提取继承类对象,但这会使事情变得有点复杂,我正在寻找一种解决方案,使我能够在不丢失唯一字段的情况下一次提取所有继承类对象。
提前谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题