Когда я пытаюсь получить элементы через DynamoDB, используя Java API, я получаю ошибку gettint, как «исключение dynamicodbmapping: неконвертировать атрибут Список атрибута». Мой pojo содержит строку и список строковых переменных.
@ DynamoDBTable (tableName = "USERS_PROFILE")
открытый класс UsersProfile {
@DynamoDBHashKey(attributeName="USERID")
private String userId;
@DynamoDBAttribute(attributeName="FIRSTNAME")
private String firstName;
@DynamoDBAttribute(attributeName="LASTNAME")
private String lastName;
@DynamoDBAttribute(attributeName="EMAIL")
private String email;
//@DynamoDBTypeConvertedEnum
@DynamoDBAttribute(attributeName="APPLIST")
private List<String> appList;
//private String appList;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public List getAppList() {
return appList;
}
public void setAppList(List appList) {
this.appList = appList;
}
/*public Map<String, String> getAppList() {
return appList;
}
public void setAppList(Map<String, String> appList) {
this.appList = appList;
}
* /
/ * public String getAppList () {
возврат appList; enter code here
}
public void setAppList (String appList) {
this.appList = appList;
}
* /
}
публичный список getAppList (String userId) {
попробуй {
awsCredentials = AWSAuthenticationUtil.getAWSCredentials();
amazonDynamoDBClient = DynamoDBUtil.getAmazonDynamoDBClient(awsCredentials);
DynamoDBMapper dynamoDBMapper = new DynamoDBMapper(amazonDynamoDBClient);
Map<String, AttributeValue> attributeValues = new HashMap<String, AttributeValue>();
attributeValues.put(":v1", new AttributeValue().withS(userId));
DynamoDBQueryExpression<UsersProfile> queryExpression = new DynamoDBQueryExpression<UsersProfile>()
.withConsistentRead(false)
.withKeyConditionExpression("USERID = :v1")
.withExpressionAttributeValues(attributeValues);
List<UsersProfile> appList = dynamoDBMapper.query(UsersProfile.class, queryExpression);
if(appList.size()>0){
return (List<UsersProfile>) appList.get(0);
} else {
return null;
}
} catch (AmazonServiceException ase) {
throw new RuntimeException("Internal Server Error");
} catch (AmazonClientException ace){
throw new RuntimeException("Internal Server Error");
} catch (Exception e){
throw new RuntimeException(e.getMessage());
} finally {
amazonDynamoDBClient = null;
awsCredentials = null;
}
}
Отправляю «ID пользователя» в качестве входного параметра, исходя из того, что мы можем получить элементы в списке объектов.