为了账号安全,请及时绑定邮箱和手机立即绑定

如何为 DynamoDB 设置时区在 spring 数据中自动生成时间戳

如何为 DynamoDB 设置时区在 spring 数据中自动生成时间戳

三国纷争 2023-03-31 14:26:40
我正在尝试在 dynamoDb 表中添加时间属性。我在我的日期容器上添加了 @DynamoDBAutoGeneratedTimestamp 注释,但它似乎选择 00:00 作为默认时区。@get:DynamoDBAutoGeneratedTimestamp(strategy=DynamoDBAutoGenerateStrategy.CREATE)    var createdAt: String? = null    @get:DynamoDBAutoGeneratedTimestamp(strategy=DynamoDBAutoGenerateStrategy.ALWAYS)    var updateAt: String? = null
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

无法为 设置区域偏移量@DynamoDBAutoGeneratedTimestamp,但可以创建您自己的@DynamoDBAutoGenerator实现以及相应的注释。


以下是您将如何在 Java 中完成它。(看起来您使用的是 Kotlin,但转换它应该很简单。)


@DynamoDBAutoGenerated(generator=AutoGeneratedTimestampWithOffset.Generator.class)

@Retention(RetentionPolicy.RUNTIME)

@Target({ElementType.METHOD})

public @interface AutoGeneratedTimestampWithOffset {


    /**

     * See {@link ZoneOffset#of(String)} for valid values.

     */

    String offset();

    DynamoDBAutoGenerateStrategy strategy() default DynamoDBAutoGenerateStrategy.ALWAYS;


    public class Generator implements DynamoDBAutoGenerator<String> {

        private final String offset;

        private final DynamoDBAutoGenerateStrategy strategy;


        public Generator(final Class<String> targetType, final AutoGeneratedTimestampWithOffset annotation) {

            this.offset = annotation.offset();

            this.strategy = annotation.strategy();

        }


        @Override

        public DynamoDBAutoGenerateStrategy getGenerateStrategy() {

            return strategy;

        }


        @Override

        public final String generate(final String currentValue) {

            return OffsetDateTime.ofInstant(Instant.now(), ZoneOffset.of(offset)).toString();

        }

    }

}

在你的@DynamoDBTable课堂上,你会像这样使用这个注解:


@get:AutoGeneratedTimestampWithOffset(offset="+05:30", strategy=DynamoDBAutoGenerateStrategy.CREATE)

var createdAt: String? = null


@get:AutoGeneratedTimestampWithOffset(offset="+05:30", strategy=DynamoDBAutoGenerateStrategy.ALWAYS)

var updateAt: String? = null


查看完整回答
反对 回复 2023-03-31
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信