如何解决错误"无法解析符号==="

时间:2015-11-16 07:40:51

标签: scala intellij-idea squeryl

我在scalatra中有一个简单的CRUD项目,而作为ORM,我使用了squeryl。我想创建一些彼此相关的表。在这一行:

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

我有编译错误:

  

无法解析符号===

我的依赖是:

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

我做错了什么?为什么它无法解析符号" ==="

2 个答案:

答案 0 :(得分:3)

您使用的是什么版本的scala?

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

已经使用不同版本的scala编译了两个库。这可能导致编译期间出现意外行为。您应该坚持使用单个scala版本编译的二进制文件。

答案 1 :(得分:3)

我同意保持一致的Scala版本,我还想指出===运算符是通过隐式转换引入的。要在范围内进行隐式转换,您需要在使用它的地方导入org.squeryl.PrimitiveTypeMode._。