2012-07-09 5 views
0

Slick (Scalaquery)을 사용하고 있습니다. slick tutorial에 따르면 - 내가 삽입하고자하는 열의 투영을 정의 할 수 있습니다.Slick (Scalaquery) - 삽입 오류가 발생합니다

[NoSuchMethodError: scala.Predef$.augmentString(Ljava/lang/String;)Ljava/lang/String;]. 

내 모델은 다음과 같이 정의된다 : 나는 삽입이 투사를 사용할 때, 내가 말하는 형식 오류, (. 내 인덱스는 자동 증가 열 때문에이 프로젝션을 정의하고있다) 그러나 :

! @6b1eg7f2d - Internal server error, for request [POST /addBook] -> 

play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[NoSuchMethodError: scala.Predef$.augmentString(Ljava/lang/String;)Ljava/lang/String;]] 
    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.NoSuchMethodError: scala.Predef$.augmentString(Ljava/lang/String;)Ljava/lang/String; 
    at scala.slick.driver.BasicSQLUtilsComponent$class.quoteIdentifier(BasicSQLUtilsComponent.scala:12) ~[slick_2.10.0-M4-0.10.0-M2.jar:0.10.0-M2] 
    at scala.slick.driver.PostgresDriver$.quoteIdentifier(PostgresDriver.scala:69) ~[slick_2.10.0-M4-0.10.0-M2.jar:0.10.0-M2] 
    at scala.slick.driver.BasicStatementBuilderComponent$InsertBuilder.appendNamedColumn(BasicStatementBuilderComponent.scala:400) ~[slick_2.10.0-M4-0.10.0-M2.jar:0.10.0-M2] 
    at scala.slick.driver.BasicStatementBuilderComponent$InsertBuilder.scala$slick$driver$BasicStatementBuilderComponent$InsertBuilder$$f$1(BasicStatementBuilderComponent.scala:387) ~[slick_2.10.0-M4-0.10.0-M2.jar:0.10.0-M2] 
    at scala.slick.driver.BasicStatementBuilderComponent$InsertBuilder$$anonfun$scala$slick$driver$BasicStatementBuilderComponent$InsertBuilder$$f$1$1.apply$mcVI$sp(BasicStatementBuilderComponent.scala:377) ~[slick_2.10.0-M4-0.10.0-M2.jar:0.10.0-M2] 
    at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:75) ~[scala-library.jar:0.11.3] 

누군가가 내 삽입 뭐가 잘못 됐는지 지적으로 도와 줄 수 : 여기

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 withoutId = name ~ filename 

    def findAll() : Seq[Book] = database.withSession { implicit db:Session => 
    (for(t <- this) yield t.name ~ t.filename).list.map(attrs => Book(attrs._1, attrs._2)) 
    } 

    def create(book: Book): Unit = database.withSession { implicit db:Session => 
    this.withoutId insert(book.name, book.filename) 
    } 

} 

는 스택 추적입니까?

+1

jar의 버전에서는 바이너리 호환성 문제가 있음을 강력하게 제안합니다. Slick (slick_2.10.0-M4-0.10.0-M2.jar)은 스칼라 2.10.0-M4 용으로 컴파일되고 play (2.9.1-2.0 .2.jar) 및 기타는 2.9.1 용으로 컴파일됩니다. – pedrofurla

답변

1

SLICK는 스칼라 2.9에서 지원되지 않습니다 (Play에서 사용). 모든 "적절한"SLICK 빌드 (scala.slick 네임 스페이스와 새로운 프론트 엔드에서)에는 Scala 2.10.0-M4 또는 -M5가 필요합니다. Scala 2.9에서 지원되는 최신 버전은 ScalaQuery 0.10.0-M1입니다.

스 니펫에서 사용중인 기능으로 판단 할 때 모든 항목이 ScalaQuery 0.10.0-M1 또는 0.9 (다른 가져 오기 제외)와 동일한 방식으로 작동해야합니다.