amazon-web-services - @DynamoDBAttribute 是否支持属性名称中的文档路径?
问题描述
我检查了 DynamoDB 文档,但找不到任何东西来确认或否认这是否允许。
对of使用文档路径是否有效,如此代码片段中所示?attributeName
@DynamoDBAttribute
@DynamoDBDocument
public class MyClass {
@DynamoDBAttribute(attributeName="object.nestedObject.myAttribute")
private String myAttribute;
.
.
.
// Getters & Setters, etc
}
编辑:为了清楚起见,我特别想找出@DynamoDBAttribute
Java注释中的文档路径是否有效,作为直接访问嵌套值的一种方式。我知道在指定查询时文档路径通常有效,但这个问题专门针对 DynamoDBMapper 注释。
解决方案
是的,属性名称可以有Dot
它。但是,在我看来,不建议使用Dot
属性名称。通常,Dot
将用于在Map
属性中导航树。
以下是 DynamoDB 的命名规则:
所有名称都必须使用 UTF-8 编码,并且区分大小写。
表名和索引名的长度必须在 3 到 255 个字符之间,并且只能包含以下字符:
阿兹
AZ
0-9
_(下划线)
- (短跑)
. (点)
属性名称的长度必须介于 1 到 255 个字符之间。
访问地图元素:-
地图元素的取消引用运算符是 . (一个点)。使用点作为地图中元素之间的分隔符:
MyMap.nestedField
MyMap.nestedField.deeplyNestedField
我可以创建属性名称包含Dot
的项目,并成功使用 FilterExpression 查询该项目。
它在所有语言的 AWS 开发工具包中的工作方式类似。只要将数据类型定义为字符串,它就会按预期工作。
一些 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;
}
推荐阅读
- microsoft-teams - 从本地 Skype for Business 迁移到 Teams
- flutter - 使用 null 改写 Dart 2.0 中的 if 语句
- mysql - 数据洞察中的 REGEXP_MATCH
- javascript - vue.js 中的 $http.get() 与 axios.get() 有什么区别?
- c# - WPF:如何同步异步加载的列表视图
- c++ - 如何制作参数数量未知的构造函数?
- perl - 比较文件并检查一个文件中存在的东西在另一个文件中是否不存在
- java - Spring Boot Tomcat 不会在特定端口上启动
- css - Css动画:用颜色从左到右填充一个div
- r - R中的F_meas中的错误'输入数据必须具有相同的两个级别'?