【问题标题】:How to Set java ZonedDateTime value to Cassandra Timestamp field如何将 java ZonedDateTime 值设置为 Cassandra 时间戳字段
【发布时间】:2017-06-19 03:31:40
【问题描述】:

我已经生成了使用 cassandra 作为数据库的微服务 jhpister API。我已经使用 yo jhipster: entity entityname 生成了实体。在生成字段时,我将 ZonedDateTime 作为字段 CreatedOn 的数据类型。因此,它在 cassandra 表和带有 ZonedDateTime 的 java 实体中创建了 TimeStamp 作为数据类型。我有一些使用 BindStatement 的自定义插入代码

BatchStatement batch = new BatchStatement();
batch.add(insertStatement.bind()
.setTimestamp("createdOn", existingWorkAssignment.getCreatedOn());

但这会产生编译时错误,表示无法解析方法,因为我们设置的值是 zoneddatetime,但内部 cassandra 数据类型是时间戳。请帮忙

【问题讨论】:

    标签: jhipster cassandra-3.0


    【解决方案1】:

    首先将 ZonedDateTime 值转换为 Timestamp 并设置该值。

    尝试这样做。 示例:

    ZonedDateTime dateTime =ZonedDateTime.from(ZonedDateTime.now());
    Timestamp timestamp = Timestamp.valueOf(dateTime.toLocalDateTime());
    System.out.println(timestamp);
    

    你的情况

    BatchStatement batch = new BatchStatement();
    batch.add(insertStatement.bind()
      .setTimestamp("createdOn", Timestamp.valueof(existingWorkAssignment.getCreatedOn().toLocalDateTime());
    

    【讨论】:

      【解决方案2】:

      Datastax 建议使用元组将 ZonedDateTime 分别存储为 Timestamp 和 ZoneInfo。例子可以找到there

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-05
        • 1970-01-01
        • 1970-01-01
        • 2017-10-15
        • 2017-10-07
        • 2015-07-02
        • 1970-01-01
        • 2016-12-18
        相关资源
        最近更新 更多