我在尝试运行Squeryl示例代码时遇到编译时错误。以下代码基于使用Squeryl连接到SQLServer的My Jourures in Coding blog post。
import org.squeryl.adapters.MSSQLServer
import org.squeryl.{ SessionFactory, Session}
import com.company.model.Consumer
class SandBox {
def tester() = {
val databaseConnectionUrl = "jdbc:jtds:sqlserver://myservername;DatabaseName=mydatabasename"
val databaseUsername = "userName"
val databasePassword = "password"
Class.forName("net.sourceforge.jtds.jdbc.Driver")
SessionFactory.concreteFactory = Some(()=>
Session.create(
java.sql.DriverManager.getConnection(databaseConnectionUrl, databaseUsername, databasePassword),
new MSSQLServer))
val consumers = table[Consumer]("Consumer")
}
}
我相信我已正确配置build.sbt文件以导入Squeryl& JTDS库。在添加依赖项后运行SBT时,似乎需要下载库。
libraryDependencies ++= List (
"org.squeryl" %% "squeryl" % "0.9.5-6",
"net.sourceforge.jtds" % "jtds" % "1.2.4",
Company.teamcityDepend("company-services-libs"),
Company.teamcityDepend("ssolibrary")
) ::: Company.teamcityConfDepend("company-services-common", "test,gatling")
我确信至少有一些依赖项已成功安装。我的基础是SessionFactory代码块成功编译的事实。它只是尝试从Consumer类到Consumer SQLServer表设置映射的行。
val consumers = table[Consumer]("Consumer")
此行导致抛出编译时错误。编译无法找到表对象。
[info] Compiling 8 Scala sources to /Users/pbeacom/Company/integration/target/scala-2.10/classes...
[error] /Users/pbeacom/Company/integration/src/main/scala/com/company/code/SandBox.scala:25: not found: value table
[error] val consumers = table[Consumer]("Consumer")
正在使用的Scala版本是2.10,如果表格行被注释,则代码编译成功。使用表对象来完成数据模型映射几乎无处不在我在线研究的Squeryl示例中,似乎没有其他人遇到过类似的问题。
答案 0 :(得分:1)
发布此内容后不久,我终于发现了问题。我没有充分意识到Scala中大量使用mixins。我没有扩展Schema类。这就是为什么在SandBox类的范围内未知表的原因。我能够通过以下类定义解决问题:
class SandBox extends Schema {
def tester() = {
...