我有一个用例,我希望序列化Cassandra BoundStatement 并将其转换为byte[]
数组并通过网络发送并将其反序列化回{{1}对象。
我正在使用 Java 8。
但问题是 BoundStatement没有实现Bound Statement
接口。
有什么方法可以序列化BoundStatement,通过HTTP发送它并将其反序列化回Serializable
答案 0 :(得分:1)
如果您想要序列化BoundStatement
,那么您还必须序列化PreparedStatement
,DataWrapper
,因为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)
...