当前位置: 首页 > 知识库问答 >
问题:

如何处理Dynamodb中的混合数据类型?

孙夕
2023-03-14

我们有一个DynamoDb表,其中一个列名“createdAt”有时创建为S(String)数据类型,有时创建为N(Number)数据类型。

在我的代码中,如果我定义为String,当我想获取数据时它会失败,它是数字:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@EqualsAndHashCode
@DynamoDBTable(tableName = "SomeTable")
public class SomeTable {
    @DynamoDBAttribute
    @DynamoDBTyped(DynamoDBMapperFieldModel.DynamoDBAttributeType.S)
    private Long createdAt;
}

如果我定义为Number,当我想获取数据并且它是表中的字符串时失败:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@EqualsAndHashCode
@DynamoDBTable(tableName = "SomeTable")
public class SomeTable {
    @DynamoDBAttribute
    @DynamoDBTyped(DynamoDBMapperFieldModel.DynamoDBAttributeType.N)
    private Long createdAt;
}

你们有没有人以前也有过同样的问题?应该有办法解决它对吗?并且不能只选择一种数据类型:(

共有1个答案

陈和裕
2023-03-14

用不同的类型保存相同的属性听起来像是一个糟糕的设计,如果可以的话,使用两个属性。

然而,如果您绝对需要这样存储它,您可以使用自定义转换器。

    @DynamoDBAttribute
    @DynamoDBTypeConverted(converter = CustomConverter.class)
    private Long createdAt;

然后是转换器

class CustomConverter<Object> implements AttributeConverter<Object> {
... implement the methods here handling both cases String and Long
 类似资料:
  • 希望创建一个DynamoDB全局表来存储客户信息。我的问题是,我目前的模式是监听此表上的更改,并使用Lambda触发器发送电子邮件更新。 i、 e.您的个人资料信息已更改。如果不是你。。 我现在是否需要在每个区域中使用该Lambda?数据复制是否意味着每个区域都会触发该Lambda?

  • 经常会有短暂的组织混乱,比如解雇,收购,IPO,新雇佣,等等。对每个人来说这都是令人不安的,但可能对于那些将自尊建立在能力而非位置上的程序员来讲,这种不安不会那么严重。组织混乱对程序员来讲是锻炼他们的魔力的好机会。因为这是一个集体秘密,在最后我会有所保留。如果你不是一个程序员,就不要再读下去了。 工程师有能力创造与维持。 非工程师可以安排人们,但,在典型的软件公司,如果没有程序员的话,他们不能创造

  • 问题内容: 我们有三个按地区物理隔离的数据库,其中一个位于洛杉矶,旧金山和纽约。所有数据库共享相同的架构,但包含特定于其区域的数据。我们正在寻求将这些数据库合并为一个数据库并进行镜像。我们需要保留每个区域的数据,但是将它们合并到一个数据库中。这给我们带来了很多问题,例如,我们肯定会有重复的主键,而外键可能是无效的。 我希望找到一个对这样的任务有经验的人,他可以提供一些技巧,策略和经验,以帮助我们完

  • 数据混合是Tableau的强大功能。它用于从多个数据源中的相关数据分析单个视图中的数据。 例如: 假设销售数据存在于关系数据库中,而销售目标数据存在于Excel工作表中。 现在,为了将实际销售额与目标销售额进行比较,根据共同维度混合数据以访问“销售目标”度量标准。 数据混合中涉及的两个数据源被称为主数据源和辅助数据源。 在主数据源和辅助数据源之间构建左连接,其中所有数据行来自主数据行,仅匹配来自辅

  • 我想知道如何在ASP中处理依赖注入。NET核心,用于同时具有对象和字符串作为参数的类型。由于字符串无法注册到DI框架,我目前正在使用implementationfactory并使用服务定位器模式,还有其他方法吗?是否有类似于Autofac的命名参数的.WithParameter? Asp.net核心DI使得向DI框架注册一个类型变得容易(并且干净),对于那些已经向DI框架注册了参数的类型。 给定以

  • 我正在为Java 6开发源代码到源代码转换器*1)。 我需要保持负面信息和正面信息,所以我必须为变压器实现小约束系统。约束系统是受限制的CNF公式,可以定义为以下内容: 其中,是等式约束(替换、变量赋值), 是质量限制,