【问题标题】:Serialize BoundStatement cassandra序列化BoundStatement cassandra
【发布时间】:2017-12-20 13:07:15
【问题描述】:

我有一个用例,我想序列化 Cassandra BoundStatement 并将其转换为 byte[] 数组并通过网络发送并将其反序列化回 Bound Statement 对象。

我正在使用 Java 8。

但是问题是BoundStatement 没有实现Serializable 接口。

有什么方法可以序列化 BoundStatement,通过 HTTP 发送并反序列化回BoundStatement

【问题讨论】:

    标签: java serialization cassandra datastax


    【解决方案1】:

    如果你想序列化BoundStatement,那么你还必须序列化PreparedStatementDataWrapper,因为BoundStatement同时使用它们。

    即使您能够序列化BoundStatement,如果没有创建它的会话,您也无法执行它。如果您在其他会话中执行BoundStatement,驱动程序将抛出InvalidQueryException

    Exception in thread "main" com.datastax.driver.core.exceptions.InvalidQueryException: Tried to execute unknown prepared query : 0x0c245df8681f7dc939aba0c76164e4d3. You may have used a PreparedStatement that was created with another Cluster instance.
        at com.datastax.driver.core.SessionManager.makeRequestMessage(SessionManager.java:571)
        at com.datastax.driver.core.SessionManager.executeAsync(SessionManager.java:131)
        at com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:68)
        ...
    

    【讨论】:

    • 他们有什么方法可以从绑定语句中获取查询
    • 是的,您可以使用boundStatement.preparedStatement().getQueryString()
    • 感谢您的回答,但它返回了我准备好的语句查询,而不是实际进入数据库的查询,例如 ------> 返回 insert into table(name) value (?) 但我想要完整的查询值 @ 987654331@
    • 您无法从绑定语句中获取带有值的查询。您不知道要插入的值吗?
    猜你喜欢
    • 2021-08-18
    • 2016-07-03
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 2014-12-30
    • 2015-10-06
    • 1970-01-01
    • 2019-08-29
    相关资源
    最近更新 更多