title: Play framework + SLICK (Scalaquery) tutorial
body: <p>Does anybody know of a good tutorial or a sample project (github) of using Play framework with SLICK (ScalaQuery)? I am struggling to make them work together.</p>
  
  <p>I am getting this error:</p>
  
  <pre><code>[info] play - Application started (Dev)
  [error] application - 
  
  ! @6b13oi41c - Internal server error, for request [GET /listBooks] -&gt;
  
  play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[NoClassDefFoundError: Could not initialize class scala.slick.ast.opt.Relational$]]
      at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:134) [play_2.9.1-2.0.2.jar:2.0.2]
      at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:115) [play_2.9.1-2.0.2.jar:2.0.2]
      at akka.actor.Actor$class.apply(Actor.scala:318) [akka-actor-2.0.2.jar:2.0.2]
      at play.core.ActionInvoker.apply(Invoker.scala:113) [play_2.9.1-2.0.2.jar:2.0.2]
      at akka.actor.ActorCell.invoke(ActorCell.scala:626) [akka-actor-2.0.2.jar:2.0.2]
      at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:197) [akka-actor-2.0.2.jar:2.0.2]
  Caused by: java.lang.NoClassDefFoundError: Could not initialize class scala.slick.ast.opt.Relational$
      at scala.slick.driver.BasicProfile$class.processAST(BasicProfile.scala:18) ~[slick_2.10.0-M4-0.10.0-M2.jar:0.10.0-M2]
      at scala.slick.driver.PostgresDriver$.processAST(PostgresDriver.scala:69) ~[slick_2.10.0-M4-0.10.0-M2.jar:0.10.0-M2]
      at scala.slick.driver.BasicProfile$class.createQueryBuilder(BasicProfile.scala:22) ~[slick_2.10.0-M4-0.10.0-M2.jar:0.10.0-M2]
      at scala.slick.driver.PostgresDriver$.createQueryBuilder(PostgresDriver.scala:69) ~[slick_2.10.0-M4-0.10.0-M2.jar:0.10.0-M2]
      at scala.slick.driver.BasicProfile$class.buildSelectStatement(BasicProfile.scala:23) ~[slick_2.10.0-M4-0.10.0-M2.jar:0.10.0-M2]
      at scala.slick.driver.PostgresDriver$.buildSelectStatement(PostgresDriver.scala:69) ~[slick_2.10.0-M4-0.10.0-M2.jar:0.10.0-M2]
  [error] application - 
  </code></pre>
  
  <p>Here is my Book model:  </p>
  
  <pre><code>package models
  
  import play.api.db._
  import play.api.Play.current
  
  import scala.slick.driver.PostgresDriver.simple._
  import scala.slick.ql.{MappedTypeMapper}
  import scala.slick.session.{Session, Database}
  
  case class Book(name: String, filename: String)
  
  object Book extends Table[(Long, String, String)]("book") {
  
    lazy val database = Database.forDataSource(DB.getDataSource())
    def id = column[Long]("id", O PrimaryKey, O AutoInc)
    def name = column[String]("name", O NotNull)
    def filename = column[String]("filename", O NotNull)
    def * = id ~ name ~ filename
  
    def findAll() : Seq[Book] = database.withSession { implicit db:Session =&gt;
      (for(t &lt;- this) yield t.name ~ t.filename).list.map(attrs =&gt; Book(attrs._1, attrs._2))
    }
  
    def create(book: Book): Unit = database.withSession { implicit db:Session =&gt;
      this.name ~ this.filename insert(book.name, book.filename)
    }
  
  }
  </code></pre>
  
  <p>EDIT:<br>
  This is my Build.scala</p>
  
  <pre><code>import sbt._
  import Keys._
  import PlayProject._
  
  object ApplicationBuild extends Build {
  
      val appName         = "PlayWithScala"
      val appVersion      = "1.0-SNAPSHOT"
  
      val appDependencies = Seq(
        // Add your project dependencies here,
        "postgresql" % "postgresql" % "9.1-902.jdbc4",
        "com.typesafe" % "slick_2.10.0-M4" % "0.10.0-M2"
      )
  
      val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
        // Add your own project settings here      
      )
  
  }
  </code></pre>