Peter Beacom
Peter Beacom

Reputation: 41

What can cause the Squeryl table object to be not found?

I am encountering a compile time error while attempting to get Squeryl example code running. The following code is based on the My Adventures in Coding blog post about connecting to SQLServer using Squeryl.

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")
  }
}

I believe I have the build.sbt file configured correctly to import the Squeryl & JTDS libraries. When running SBT after adding the dependencies it appeared to download the libraries need.

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")

I am certain that at least some of the dependencies were successfully installed. I base this on the fact that the SessionFactory code block compiles successfully. It is only the line that attempts to setup a map from the Consumer class to the Consumer SQLServer table.

val consumers = table[Consumer]("Consumer")

This line causes a compile time error to be thrown. The compile is not able to find the table object.

[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")

The version of Scala in use is 2.10 and if the table line is commented the code compiles successfully. Use of the table object to accomplish data model mappings is nearly ubiquitous in the Squeryl examples I'm been researching online and no one else seems to have encountered a similar problem.

Upvotes: 0

Views: 265

Answers (1)

Peter Beacom
Peter Beacom

Reputation: 41

Shortly after posting this and reviewing it I finally noticed my problem. I was not being conscious enough of the heavy use of mixins in Scala. I failed to extend the Schema class. That's why table is unknown in the scope of the SandBox class. I was able to solve the problem with the following class definition:

class SandBox extends Schema {
  def tester() = {
  ...

Upvotes: 1

Related Questions