序列化BoundStatement cassandra

时间:2017-07-15 15:20:06

标签: java serialization cassandra datastax

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

我正在使用 Java 8。

问题是 BoundStatement没有实现Bound Statement接口。

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

1 个答案:

答案 0 :(得分: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)
    ...