2017-07-15 89 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')' –