我正在构建一个简单的 Scala Play 应用程序,它使用 Scala 的 Phantom DSL 驱动程序将数据存储在 Cassandra DB 中。Cassandra 的优点之一是您可以进行部分更新,即只要您提供键列,您就不必为表中的所有其他列提供值。Cassandra 将根据密钥将数据合并到您现有的记录中。
不幸的是,这似乎不适用于 Phantom DSL。我有一个包含几列的表,我希望能够进行更新,仅为键和数据列之一指定值,并让 Cassandra 像往常一样将其合并到记录中,同时保留所有其他数据列对于该记录不变。
但是,如果您未在插入/更新语句中指定值,Phantom DSL 会用 null 覆盖现有列。
有人知道解决方法吗?我不想每次都读取/写入所有数据列,因为最终数据列会非常大。
仅供参考,我使用与以下示例相同的方法进行幻像编码: