Java 无法将多个对象保存到DynamoDB?
我试图通过一个服务向DynamoDB数据库中添加多个条目,但是当代码执行时,只保存一个条目。这就是我到目前为止所做的:Java 无法将多个对象保存到DynamoDB?,java,android,amazon-web-services,amazon-dynamodb,Java,Android,Amazon Web Services,Amazon Dynamodb,我试图通过一个服务向DynamoDB数据库中添加多个条目,但是当代码执行时,只保存一个条目。这就是我到目前为止所做的: public int onStartCommand(Intent intent, int flags, int startId) { CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( getApplicat
public int onStartCommand(Intent intent, int flags, int startId) {
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(), // Context
"us-east-1:851c121e-326d-4c9e-be47-fec40eb7b693", // Identity Pool ID
Regions.US_EAST_1 // Region
);
AmazonDynamoDB client = new AmazonDynamoDBClient(credentialsProvider);
Toast.makeText(this, "Adding To Database...", Toast.LENGTH_LONG).show();
CognitoCachingCredentialsProvider cognitoProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(), // Context
"us-east-1:851c121e-326d-4c9e-be47-fec40eb7b693", // Identity Pool ID
Regions.US_EAST_1 // Region
);
AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(cognitoProvider);
DynamoDBMapper mapper = new DynamoDBMapper(ddbClient);
String streamName = intent.getStringExtra("streamName");
String userCreated = intent.getStringExtra("userCreated");
ArrayList<String> selectedFriend = intent.getStringArrayListExtra("userInvolved");
intent.getStringExtra("comment");
for(int i = 0; i < selectedFriend.size(); i++){
Streams streams = new Streams();
streams.setStreamname(streamName);
streams.setUsercreated(userCreated);
streams.setUserinvolved(selectedFriend.get(i));
streams.setUnread(true);
streams.setDeleted(false);
mapper.save(streams);
}
}
DynamodbMapper有一个批处理保存方法,允许您在批处理中保存多个对象。查看。您的DynamoDB哈希键似乎是Stream类中用户创建的
字段。这是DynamoDB主键,它唯一地标识DynamoDB表中的单个项
每次调用mapper.save(streams)
,您都会覆盖在循环的上一次迭代中编写的项目,因为您似乎只在此处设置一次用户创建的
字段:
stringusercreated=intent.getStringExtra(“userCreated”)代码>
尝试使用唯一标识符(例如,流名称
作为散列键)。如果多个项具有相同的散列键,则还可以使用具有范围键的架构来创建(散列键、范围键)主键,以唯一标识DynamoDB表中的项
@DynamoDBTable(tableName = "Streams")
public class Streams{
private String streamname;
private String usercreated;
private String userinvolved;
private boolean unread;
private boolean deleted;
@DynamoDBAttribute(attributeName = "Stream_Name")
public String getStreamname() {
return streamname;
}
public void setStreamname(String streamname) {
this.streamname = streamname;
}
@DynamoDBHashKey(attributeName = "User_Created")
public String getUsercreated() {
return usercreated;
}
public void setUsercreated(String usercreated) {
this.usercreated = usercreated;
}
@DynamoDBAttribute(attributeName = "User_Involved")
public String getUserinvolved() {
return userinvolved;
}
public void setUserinvolved(String userinvolved) {
this.userinvolved = userinvolved;
}
@DynamoDBAttribute(attributeName = "Unread")
public boolean isUnread() {
return unread;
}
public void setUnread(boolean unread) {
this.unread = unread;
}
@DynamoDBAttribute(attributeName = "Deleted")
public boolean isDeleted() {
return deleted;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
}