Scala 在Slick中重用StaticQuery对象是否可能/可取?

Scala 在Slick中重用StaticQuery对象是否可能/可取?,scala,slick,Scala,Slick,我打算一次性定义我的Slick查询,并在需要时重用它们,但我遇到了一个NullPointerException,我追溯到同一个StaticQuery0对象在同一个会话中被使用了两次。Query和StaticQuery对象是否打算以这种方式重用?有没有更好的方法来解决这个问题,比如每次创建一个新的查询对象?还是我通过其他错误触发了异常 下面是错误的详细信息。name.query是通过StaticQuery.queryNA创建的StaticQuery0。在不同的会话中重用它可以: import Da

我打算一次性定义我的Slick查询,并在需要时重用它们,但我遇到了一个NullPointerException,我追溯到同一个StaticQuery0对象在同一个会话中被使用了两次。Query和StaticQuery对象是否打算以这种方式重用?有没有更好的方法来解决这个问题,比如每次创建一个新的查询对象?还是我通过其他错误触发了异常

下面是错误的详细信息。name.query是通过StaticQuery.queryNA创建的StaticQuery0。在不同的会话中重用它可以:

import Database.threadLocalSession
val points = db withSession {
  name.query.to[Vector]
}
val points2 = db withSession {
  name.query.to[Vector] // No problem!
}
在同一会话中再次使用它会引发NullPointerException:

import Database.threadLocalSession
val points = db withSession {
  name.query.to[Vector]
  name.query.to[Vector] // Kablam!
}
例外情况如下:

java.lang.NullPointerException
    at com.mysql.jdbc.ConnectionImpl.initializeResultsMetadataFromCache(ConnectionImpl.java:5552)
    at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1368)
    at scala.slick.jdbc.StatementInvoker.results(StatementInvoker.scala:34)
    at scala.slick.jdbc.StatementInvoker.elementsTo(StatementInvoker.scala:17)
    at scala.slick.jdbc.Invoker$class.foreach(Invoker.scala:90)
    at scala.slick.jdbc.StatementInvoker.foreach(StatementInvoker.scala:10)
    at scala.slick.jdbc.Invoker$class.build(Invoker.scala:66)
    at scala.slick.jdbc.StatementInvoker.build(StatementInvoker.scala:10)
    at scala.slick.jdbc.Invoker$class.to(Invoker.scala:74)
    at scala.slick.jdbc.StatementInvoker.to(StatementInvoker.scala:10)
    at scala.slick.jdbc.UnitInvoker$class.to(Invoker.scala:152)
    at scala.slick.jdbc.StaticQuery0.to(StaticQuery.scala:        
    at (the second call to name.query.to[Vector])