2015-11-16 2 views
0

У меня есть простой проект CRUD в скаляре, и в качестве ORM я использую squeryl. Я хочу создать несколько таблиц, которые связаны друг с другом. На этой линии:Как разрешить ошибку «Не удается разрешить символ ===»

val questionToAnswer = CustomTypesMode.oneToManyRelation(questions,answers) via ((q,a) => q.id === a.question) 

У меня есть ошибка компиляции:

Cannot resolve symbol ===

Мои зависимости являются:

val scalatraVersion = "2.4.0-RC2-2" 

libraryDependencies ++= Seq(
    "org.scalatra" %% "scalatra" % scalatraVersion, 
    "org.eclipse.jetty" % "jetty-webapp" % "9.3.0.M2", 
    "org.scalaquery" % "scalaquery_2.9.1" % "0.10.0-M1", 
    "org.squeryl" % "squeryl_2.8.0" % "0.9.5-RC2", 
    "joda-time" % "joda-time" % "2.9.1", 
    "postgresql" % "postgresql" % "9.1-901.jdbc4", 
    "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016") 

Мой IDE является IntelliJ Idea 14.1.5. Мои схемы является:

object AppSchema extends Schema{ 
    val questions = table[Question] 
    val answers = table[Answer] 
    val questionToAnswer = CustomTypesMode.oneToManyRelation(questions,answers) via ((q,a) => q.id === a.question) 
} 

case class Question (
       id:Long, 
       title:String, 
       content: String, 
       rank: Int, 
       createdDate: DateTime, 
       updatedDate: Option[DateTime] 
       ){ 
    lazy val answers = AppSchema.questionToAnswer.left(this) 
} 

case class Answer(
      id: Long, 
      content: String, 

      rank: Int, 
      createdDate: DateTime, 
      updatedDate: Option[DateTime] 
      ){ 
    lazy val question = AppSchema.questionToAnswer.right(this) 
} 

Что я делаю неправильно? Почему он не может разрешить символ «===»

+1

Оба «2.8.0» и «2.9.1» являются _very_ старыми версиями Scala. Текущая версия Scala - 2.11.7. Вы также почти всегда хотите написать что-то вроде '" org.scalaquery "%%" scalaquery ", которое получит версию, соответствующую вашей' scalaVersion'. –

ответ

3

Какую версию scala вы используете?

"org.scalaquery" % "scalaquery_2.9.1" % "0.10.0-M1", 
"org.squeryl" % "squeryl_2.8.0" % "0.9.5-RC2", 

Эти две библиотеки были скомпилированы с различными версиями scala. Это может привести к неожиданному поведению во время компиляции. Вы должны придерживаться двоичных файлов, скомпилированных с помощью одной версии scala.

3

Я соглашаюсь сохранить согласованную версию Scala, и также хочу отметить, что оператор === вводится неявным преобразованием. Чтобы иметь это неявное преобразование в области видимости, вам нужно импортировать org.squeryl.PrimitiveTypeMode._, где вы его используете.

Смежные вопросы