2017-07-15 64 views
0

我有,我想连载卡桑德拉BoundStatement并将其转换为byte[]阵列,并将其发送通过网络和反序列化回Bound Statement对象的用例。序列化BoundStatement卡桑德拉

我使用的Java 8

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

有什么办法我可以序列BoundStatement,发过来的HTTP,如果你想序列BoundStatement那么你也有系列化PreparedStatementDataWrapper反序列化回BoundStatement

回答

1

,因为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) 
    ... 
+0

是他们的任何办法可以查询回来从绑定声明 –

+0

是的,你可以用'boundStatement.preparedStatement()。getQueryString()' –

+0

谢谢你的回答,但它返回了我准备好的语句查询,而不是查询哪个实际上要去的数据库,例如------>返回'插入表(名称)值(?)'但我想要完整的查询与值'插入表(名称)值('RAM')' –