我已经生成了使用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数据类型是时间戳。请帮忙
答案 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