我正在使用Datastax驱动程序和Cassandra 3.10构建一个webapp,当我部署到Tomcat并启动它时,我收到一条错误声明:
Librabbitmq-dev
即使我不在代码中的任何地方使用它,我的所有准备语句都是以下形式:
Caused by: java.io.NotSerializableException: com.datastax.driver.core.DefaultPreparedStatement
答案 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
变量应该只是一个局部变量,生命周期是一种访问数据库的方法。