Как установить значение java ZonedDateTime в поле Cassandra Timestamp

Я создал API Microservice jhpister, который использует cassandra как db. Я создал сущности, используя yo jhipster: entity entityname. При создании полей я указал ZonedDateTime в качестве типа данных для поля CreatedOn. Таким образом, он создал TimeStamp как тип данных в таблице cassandra и в объекте java с ZonedDateTime. У меня есть пользовательский код вставки, использующий BindStatement

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

Но это генерирует ошибку времени компиляции, которая говорит, что не может разрешить метод, потому что значение, которое мы устанавливаем, — это zoneddatetime, но внутренний тип данных cassandra — отметка времени. Пожалуйста помоги


person Karunaker Reddy V    schedule 02.02.2017    source источник


Ответы (2)


сначала преобразуйте значение 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());
person Ali786    schedule 02.02.2017

Datastax предлагает использовать кортеж для хранения ZonedDateTime как Timestamp и ZoneInfo отдельно. Пример можно найти здесь

person Leammas    schedule 19.11.2019