Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java cassandra插入和更新_Java_Spring Mvc_Cassandra - Fatal编程技术网

Java cassandra插入和更新

Java cassandra插入和更新,java,spring-mvc,cassandra,Java,Spring Mvc,Cassandra,我的cassandra数据库有一个名为“createdClientId”和“updateClientId”的列。我的模型类有一个名为id(primary_key)、createdClientId和updateClientId的字段。我的请求是一个post请求,它以客户端id作为头,并且在插入时,该客户端id需要是“createdClientId”和“updateClientId”列的值,并且在更新时只应更新“updateClientId” 我的刀看起来像这样 public void getdat

我的cassandra数据库有一个名为“createdClientId”和“updateClientId”的列。我的模型类有一个名为id(primary_key)、createdClientId和updateClientId的字段。我的请求是一个post请求,它以客户端id作为头,并且在插入时,该客户端id需要是“createdClientId”和“updateClientId”列的值,并且在更新时只应更新“updateClientId”

我的刀看起来像这样

public void getdata(Model model, String clientId) {
        model.setcreatedClientId(clientId);
        model.setupdateClientId(clientId);
        String insert = SimpleJson.writeValueAsString(model);
        // insert query
String query = PropertyManager.getProperty("prop") + insert + "' IF NOT EXISTS;";
ResultSet rs = cassandraTemplate.getCqlOperations().queryForResultSet(query);
        if (rs != null) {
            LOGGER.log(DEBUG, "Result set is not null");
            if (rs.wasApplied()) {
                response.setMessage(RESPONSE_MESSAGE + " Created successfully");
            } else if (!rs.wasApplied()) {
                model.setUpdatedBy(clientId);
                // update query
                query = PropertyManager.getProperty("prop") + insert + "'";
                cassandraTemplate.getCqlOperations().queryForResultSet(query);
                response.setMessage(RESPONSE_MESSAGE + " Updated successfully");
            }
        }
    }

现在,当我插入数据时,它工作正常(即createdClientId和updateClientId字段都使用相同的客户端id值保存)但是,当我更新时,它应该只更新updateClientId,而不是更新createdClientId。

为什么每次都更新
createdClientId
是因为这一行
model.setupdateClientId(clientId),然后创建插入字符串
stringinsert=SimpleJson.writeValueAsString(model)
并在这两种情况下都使用此字符串,因此
createdClientId
得到更新
一种解决方案是将数据分为两个单独的Cassandra表:一个表只保存一次
createdClientId
数据,另一个表支持频繁更新,其中包含
updatedClientId
(两者都以
clientId
作为主键)并在第一个表查询中使用
“如果不存在”

这里的缺点是,对于每个post请求,您必须向Cassandra发出两个请求,但是如果您使用
“if NOT EXISTS”(如果不存在)