Невозможно получить данные из datastax, имеющего поле метки времени - PullRequest
1 голос
/ 10 июля 2019

У меня есть таблица ниже в пространстве клавиш myks

CREATE table IF NOT EXISTS myks.users (
    user_name text,
    email text,
    created_at timestamp,
    updated_at timestamp,
    PRIMARY KEY (user_name)
);

Ниже приведен класс моделей

@Table(value = "users")
public @Data class Users{
    @PrimaryKey
    @Column("user_name")
    @CassandraType(type = DataType.Name.TEXT)
    private String user_name;

    @Column("email")
    @CassandraType(type = DataType.Name.TEXT)
    private String email;

    @Column("created_at")
    @CassandraType(type = DataType.Name.TIMESTAMP)
    private Timestamp created_at;

    @Column("updated_at")
    @CassandraType(type = DataType.Name.TIMESTAMP)
    private Timestamp updated_at;
}

Интерфейс репозитория

@Repository
public interface UsersRepository extends CrudRepository<Users, String> {
}

Вставить приведенные ниже значения в таблицу

Users users = new Users();
LocalDateTime ldt_created = LocalDateTime.now();
LocalDateTime ldt_updated = ldt_created.plus(1000, ChronoUnit.MILLIS);
Timestamp ts_created = Timestamp.valueOf(ldt_created);
Timestamp ts_updated = Timestamp.valueOf(ldt_updated);
users.setUser_name(krishna");
users.setEmail("krishna@gmail.com");
users.setCreated_at(ts_created);
users.setUpdated_at(ts_updated);
usersRepository.save(users);

Он был сохранен в таблице, но при получении данных выдает следующее исключение

No converter found capable of converting from type [java.util.Date] to type [java.sql.Timestamp]

1 Ответ

2 голосов
/ 10 июля 2019
Тип

CQL timestamp отображается на java.util.Date тип Java, поэтому вам нужно использовать его вместо Timestamp.См. Таблица сопоставления CQL с Java для этого и других типов.

Вы также можете использовать так называемые необязательные кодеки (дополнительная зависимость) для сопоставления timestamp с другими типами Java, такими какInstant.См. документацию для получения дополнительной информации.

...