Исключение Dynamodbmapping: не преобразованный атрибут List <String>attribute " - PullRequest
0 голосов
/ 10 января 2019

Когда я пытаюсь получить элементы через 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 пользователя» в качестве входного параметра, исходя из того, что мы можем получить элементы в списке объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...