【发布时间】:2018-12-31 22:51:51
【问题描述】:
尝试使用 dynamodb 映射器保存/更新项目时,我遇到了 conditionalcheckfailed 异常。
谁能分享一下使用java的sn-p代码,可以演示如何成功实现版本控制和乐观锁定?
尝试完全不设置版本! 尝试将记录添加到表中,然后在保存之前进行读取。
什么都没醒!!我继续收到 ConditionalCheckFailed 异常。 唯一有效的是,如果我将配置设置为 COBBLER!但这不是我想要的,因为我需要对数据进行乐观锁定。
数据库项目类---
@DynamoDBTable(tableName="Funds")
public class FundsItem {
private String id;
private String auditId;
private Long version;
private String shopId;
private String terminalId;
private String txId;
@DynamoDBHashKey(attributeName = "Id")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@DynamoDBRangeKey(attributeName = "AuditId")
public String getAuditId() {
return auditId;
}
public void setAuditId(String auditId) {
this.auditId = auditId;
}
@DynamoDBVersionAttribute(attributeName = "Version")
public Long getVersion() { return version; }
public void setVersion(Long version) { this.version = version; }
@DynamoDBAttribute(attributeName = "ShopId")
public String getShopId() {
return shopId;
}
public void setShopId(String shopId) {
this.shopId = shopId;
}
@DynamoDBAttribute(attributeName = "TerminalId")
public String getTerminalId() { return terminalId; }
public void setTerminalId(String terminalId) {
this.terminalId = terminalId;
}
@DynamoDBAttribute(attributeName = "TxId")
public String getTxId() {
return txId;
}
public void setTxId(String txId) {
this.txId = txId;
}
}
保存新项目的代码 -----
public long addFunds(FundsRequest request){
FundsItem dbItem = new FundsItem();
String Id = request.getShopId().trim() + request.getTerminalId().trim();
String V0_Audit_Rec = "V0_Audit_" + Id;
//save V0 item.
dbItem.setVersion((long) 1);
dbItem.setId(Id);
dbItem.setAuditId(V0_Audit_Rec);
dbItem.setShopId(request.getShopId().trim());
dbItem.setTerminalId(request.getTerminalId().trim());
dbItem.setTxId(request.getTxId().trim());
mapper.save(dbItem);
}
请检查上面的 sn-p - 这是一个新的空表。 hashkey - id,rangekey - auditId,VersionField - 版本。
我只是希望能够添加一条新记录,这就是为什么在保存新项目之前不进行任何读取。如果我能得到这个简单的案例,即向 dynamodb 表工作添加新的 /first 记录,我也可以实现其余的用例。
【问题讨论】:
标签: java amazon-dynamodb