Cassandra + Spring Boot:配置Table自动添加INSERT时间戳

Cassandra + SpringBoot: Configure Table to automatically add INSERT timestamp

关于 Cassandra 的小问题,请使用 SpringBoot 应用程序的上下文。

我有兴趣将行插入到 table 的时间戳添加到 table。

因此,在创建 table 时,我这样做:

create table mytable (someprimarykey text PRIMARY KEY, timestamp long, someotherfield text);

我可以看到列时间戳,很高兴。

然后,Web 应用程序:

@Table
public class MyTable {

    @PrimaryKey
    private final String somePrimaryKey;

    private final long timestamp;

    private final String someOtherField;

//constructor + getters + setters

当我插入时,我会做通常的事情:

MyTable myTable = new MyTable(somePK, System.currentTimeMillis(), "foo");
myTableRepository.save(myTable);

这个很好用,我可以在table我的记录中看到,随着插入的时间,开心。

问题: 现在,对于我有兴趣插入到 Cassandra 中的数百个 POJO,它们都带有这个 timestamp long 字段。不知何故,在Web应用层,我正在处理一个数据库概念,写入的时间戳。

问题: 请问是否可以将此委托回数据库?某种:

create table mytable (someprimarykey text PRIMARY KEY, hey-cassandra-please-automatically-add-the-time-when-this-row-is-written long, someotherfield text);
or
create table mytable (someprimarykey text PRIMARY KEY, someotherfield text WITH default timestamp-insert-time-column);

Web 应用程序可以抽象创建和插入 POJO 而无需携带此时间戳字段?

谢谢

没有必要单独存储每一行​​的插入时间,因为 Cassandra 已经为元数据中的所有写入存储了它。

有一个 built-in CQL 函数 WRITETIME(),当列被写入数据库时​​,returns date/time(以微秒编码)。

对于您的情况,您可以通过以下方式查询您的 table:

SELECT WRITETIME(someotherfield) FROM mytable WHERE someprimarykey = ?

详情见CQL doc on retrieving the write time。干杯!