Class ProjectionExpression
- java.lang.Object
-
- software.amazon.awssdk.enhanced.dynamodb.internal.ProjectionExpression
-
public class ProjectionExpression extends Object
This class represents the concept of a projection expression, which allows the user to specify which specific attributes should be returned when a table is queried. By default, all attribute names in a projection expression are replaced with a cleaned placeholder version of itself, prefixed with #AMZN_MAPPED.A ProjectionExpression can return a correctly formatted projection expression string containing placeholder names (see
projectionExpressionAsString()
), as well as the expression attribute names map which contains the mapping from the placeholder attribute name to the actual attribute name (seeexpressionAttributeNames()
).Resolving duplicates
- If the input to the ProjectionExpression contains the same attribute name in more than one place, independent of nesting level, it will be mapped to a single placeholder
- If two attributes resolves to the same placeholder name, a disambiguator is added to the placeholder in order to make it unique.
Placeholder conversion examples
- 'MyAttribute' maps to
#AMZN_MAPPED_MyAttribute
- 'MyAttribute' appears twice in input but maps to only one entry
#AMZN_MAPPED_MyAttribute
. - 'MyAttribute-1' maps to
#AMZN_MAPPED_MyAttribute_1
- 'MyAttribute-1' and 'MyAttribute.1' in the same input maps to
#AMZN_MAPPED_0_MyAttribute_1
and#AMZN_MAPPED_1_MyAttribute_1
List<NestedAttributeName> attributeNames = Arrays.asList( NestedAttributeName.create("MyAttribute") NestedAttributeName.create("MyAttribute.WithDot", "MyAttribute.03"), NestedAttributeName.create("MyAttribute:03, "MyAttribute") ); ProjectionExpression projectionExpression = ProjectionExpression.create(attributeNames); Map<String, String> expressionAttributeNames = projectionExpression.expressionAttributeNames(); Optional<String> projectionExpressionString = projectionExpression.projectionExpressionAsString();
results in expressionAttributeNames: { #AMZN_MAPPED_MyAttribute : MyAttribute, #AMZN_MAPPED_MyAttribute_WithDot : MyAttribute.WithDot} #AMZN_MAPPED_0_MyAttribute_03 : MyAttribute.03} #AMZN_MAPPED_1_MyAttribute_03 : MyAttribute:03} } and projectionExpressionString: "#AMZN_MAPPED_MyAttribute,#AMZN_MAPPED_MyAttribute_WithDot.#AMZN_MAPPED_0_MyAttribute_03, #AMZN_MAPPED_1_MyAttribute_03.#AMZN_MAPPED_MyAttribute"For more information, see Projection Expressions in the Amazon DynamoDB Developer Guide.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static ProjectionExpression
create(List<NestedAttributeName> nestedAttributeNames)
Map<String,String>
expressionAttributeNames()
Optional<String>
projectionExpressionAsString()
-
-
-
Method Detail
-
create
public static ProjectionExpression create(List<NestedAttributeName> nestedAttributeNames)
-
-