Поддерживает ли @DynamoDBAttribute пути к документам в имени атрибута? - PullRequest
0 голосов
/ 04 октября 2018

Я проверил документацию по DynamoDB и не могу найти ничего, чтобы подтвердить или опровергнуть, разрешено ли это.

Допустимо ли использовать Путь к документу для attributeName из @DynamoDBAttribute, как в этом фрагменте кода?

@DynamoDBDocument
public class MyClass {

    @DynamoDBAttribute(attributeName="object.nestedObject.myAttribute")
    private String myAttribute;
    .
    .
    .
    // Getters & Setters, etc
}

Редактировать: Просто чтобы прояснить, я специально пытаюсь выяснить, является ли документпути действительны в аннотации @DynamoDBAttribute Java как способ прямого доступа к вложенному значению.Я знаю, что пути к документам обычно работают при указании запроса, но этот вопрос касается именно аннотаций DynamoDBMapper.

Ответы [ 2 ]

0 голосов
/ 20 июля 2019

Невозможно ссылаться на вложенный путь, используя имя атрибута в @DynamoDBAttribute.Мне нужно было использовать тип POJO с добавленной аннотацией @DynamoDBDocument для представления каждого уровня вложенности.

0 голосов
/ 05 октября 2018

Да, имя атрибута может содержать Dot.Однако, по моему мнению, не рекомендуется иметь Dot в имени атрибута.Обычно Dot будет использоваться для навигации по дереву в атрибуте Map.

Ниже приведены правила именования для DynamoDB:

Все имена должны быть закодированы с использованием UTF-8 и чувствительны к регистру.

Имена таблиц и индексов должны быть длиной от 3 до 255 символов и могут содержать только следующие символы:

az

AZ

0-9

_ (подчеркивание)

  • (тире)

.(точка)

Имена атрибутов должны быть длиной от 1 до 255 символов.

Доступ к элементам карты: -

Операция разыменования для элемента карты есть.(точка).Используйте точку в качестве разделителя между элементами на карте:

MyMap.nestedField

MyMap.nestedField.deeplyNestedField

Я могу создать элемент с именем атрибута, содержащийDot и успешно запросите элемент с помощью FilterExpression.

Он работает аналогично во всех языковых пакетах SDK AWS.Пока тип данных определен как String, он будет работать как положено.

Некоторые примеры JS: -

Создать элемент: -

var table = "Movies";
var year = 2017;
var title = "putitem data test 2";
var dotAttr = "object.nestedObject.myAttribute";        

var params = {
    TableName:table,
    Item:{
        "yearkey": year,
        "title": title,
        "object.nestedObject.myAttribute": "S123"
    },
    ReturnValues : 'NONE'
};

Обновление: -

Отлично работает и с аннотацией @DynamoDBAttribute.

private String dotAttr;
@DynamoDBAttribute(attributeName = "object.nestedObject.myAttribute")
    public String getDotAttr() {
        return dotAttr;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...