Jhipster 如何将java ZonedDateTime值设置为Cassandra时间戳字段

Jhipster 如何将java ZonedDateTime值设置为Cassandra时间戳字段,jhipster,cassandra-3.0,Jhipster,Cassandra 3.0,我已经生成了microservicejhpisterapi,它使用cassandra作为数据库。我使用yo jhipster:entity entityname生成了实体。在生成字段时,我为字段CreatedOn指定了ZonedDateTime作为数据类型。所以它在cassandra表和带有ZonedDateTime的java实体中创建了时间戳作为数据类型。我有一些使用BindStatement的自定义插入代码 BatchStatement batch = new BatchStatement(

我已经生成了microservicejhpisterapi,它使用cassandra作为数据库。我使用yo jhipster:entity entityname生成了实体。在生成字段时,我为字段CreatedOn指定了ZonedDateTime作为数据类型。所以它在cassandra表和带有ZonedDateTime的java实体中创建了时间戳作为数据类型。我有一些使用BindStatement的自定义插入代码

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

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

首先将ZonedDateTime值转换为设置该值的时间戳

试着这样做。 例如:

就你而言

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

Datastax建议使用元组将ZoneDateTime分别存储为时间戳和ZoneInfo。可以找到这个例子

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