如何将java ZonedDateTime值设置为Cassandra Timestamp字段

时间:2017-02-02 06:46:47

标签: jhipster cassandra-3.0

我已经生成了使用cassandra作为db的Microservice jhpister API。我使用yo jhipster:entity entityname生成了实体。生成字段时,我已将ZonedDateTime作为字段CreatedOn的数据类型。因此,它在cassandra表中创建了TimeStamp作为数据类型,在ZonedDateTime中创建了java实体。我有一些使用BindStatement

的自定义插入代码
BatchStatement batch = new BatchStatement();
batch.add(insertStatement.bind()
.setTimestamp("createdOn", existingWorkAssignment.getCreatedOn());

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

2 个答案:

答案 0 :(得分:0)

首先将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());

答案 1 :(得分:0)

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