gpt4 book ai didi

java - dynamoDB 事务管理器

转载 作者:太空宇宙 更新时间:2023-11-04 14:35:04 25 4
gpt4 key购买 nike

我有一个场景,我必须执行多个查询(删除和添加),所以我正在使用 dynamoDB 的事务库,但我收到序列化错误。我以这个网址为例 http://aws.amazon.com/blogs/aws/dynamodb-transaction-library/

下面是我的代码:

DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
PaginatedScanList<FinanceIndex> financeIndex = mapper.scan(FinanceIndex.class, scanExpression);
String index, index1 = null;

AWSCredentials credentials = Application.getCredentials();
AmazonDynamoDB client = new AmazonDynamoDBClient(credentials);
TransactionManager manager = new TransactionManager(client, "Transactions", "TransactionImages");
TransactionManager.verifyOrCreateTransactionTable(client, "Transactions", new Long(10) , new Long(10), new Long(1060));
TransactionManager.verifyOrCreateTransactionImagesTable(client, "TransactionImages", new Long(10), new Long(10), new Long(1060));
for (FinanceIndex financeID : financeIndex) {
index1 = financeID.getID();
Transaction t1 = manager.newTransaction();
Map<String, AttributeValue> reply1 = new HashMap<String, AttributeValue>();
reply1.put("id", new AttributeValue(index1));
t1.deleteItem(new DeleteItemRequest().withTableName("FinanceIndex").withKey(reply1));

//mapper.delete(financeID);
int id = Integer.valueOf(index1);
id = id + 1;
index = String.valueOf(id);
financeID.setID(index);
//mapper.save(financeID);
Map<String, AttributeValue> reply2 = new HashMap<String, AttributeValue>();
reply2.put("id", new AttributeValue(financeID.getID()));
t1.putItem((new PutItemRequest().withTableName("FinanceIndex").withItem(reply2)));
t1.commit();
}
return index1;

我收到以下错误:

com.amazonaws.services.dynamodbv2.transactions.exceptions.TransactionAssertionException:d1c3bb93-e9b7-4052-b328-b357ab412a3a - 无法序列化请求 com.amazonaws.services.dynamodbv2.transactions.Request$DeleteItem@4dcdd700 com.fasterxml。 jackson.databind.JsonMappingException:未找到类 com.amazonaws.event.ProgressListener$1 的序列化程序,并且未发现用于创建 BeanSerializer 的属性(为避免异常,请禁用 SerializationConfig.SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过引用链:com.amazonaws.services. dynamodbv2.transactions.DeleteItem["request"]->com.amazonaws.services.dynamodbv2.model.DeleteItemRequest["generalProgressListener"])

谁能告诉我我做错了什么?提前致谢。

最佳答案

我也使用这个库,也出现了类似的问题并进行了研究。

该库现在不再为 AWS Java SDK 进行维护。因此,该库在 AWS Java SDK 1.7.6 之前可以正常工作。

因为1.7.7以上有关于条件表达式的新功能。 http://aws.amazon.com/releasenotes/Java/2402335129612731

Dynamodb-transaction 库不遵循此功能,无法创建正确的查询。所以不能同时使用1.7.7添加的future和dynamodb-transaction。

1.7.7以上的库有很好的 future ,比如条件原子计数器。但交易功能也非常重要..

现在只有我们可以选择使用具有 AWS Java SDK 1.7.6 的事务库或不使用具有最新 AWS Java SDK 的事务库。

祝你好运。

关于java - dynamoDB 事务管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25693125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com