DefaultPreparedStatement不可序列化

时间:2017-07-30 07:10:56

标签: java datastax-java-driver

我正在使用Datastax驱动程序和Cassandra 3.10构建一个webapp,当我部署到Tomcat并启动它时,我收到一条错误声明:

Librabbitmq-dev

即使我不在代码中的任何地方使用它,我的所有准备语句都是以下形式:

Caused by: java.io.NotSerializableException: com.datastax.driver.core.DefaultPreparedStatement

1 个答案:

答案 0 :(得分:2)

如果你使用普通的Cassandra(没有Spring Data),你应该使用com.datastax.driver.mapping.annotations.@Transient annotation

  

无论何时在字段上添加此注释,该字段都不会   映射到任何列(在读取和写入期间都不会)。

import com.datastax.driver.mapping.annotations.Transient;
...
@Transient
private PreparedStatement selectAssetClassStmt;

不是直接问题,但为什么要声明PreparedStatement字段?
它不应该是必需的,它容易出错并且可能导致意外行为,因为您以后不会知道它的状态。

PreparedStatement变量应该只是一个局部变量,生命周期是一种访问数据库的方法。