重载的方法值<>与Play 2.1.1和PlaySlick的替代品

时间:2013-09-30 18:24:03

标签: scala playframework slick

我正在研究一个用Scala编写的程序的案例类,Play 2.1.1和PlaySlick作为数据库映射器。该申请涉及引用。我们有一个带有> 22个字段的引用表,因此我们将这些字段缩小到我们真正需要做大部分工作的22个。代码如下:

package models
import play.api.db.slick.Config.driver._

case class Citation(citation_id: Int, pubtype: String, abs: String, keywords: String,      
                    doi: String, url: String, booktitle: String, chapter: String, edition: String, editor:       
                    String, translator: String, journal: String, month: String, number: String, pages: 
                    String, publisher: String, location: String, title: String, volume: String, year: 
                    String, raw: String, owner: String)

object Citations extends Table[Citation]("citations") {
  def citation_id = column[Int]("citation_id", O.PrimaryKey, O.AutoInc)
  def pubtype = column[String]("pubtype")
  def abs = column[String]("abstract")
  def keywords = column[String]("keywords")
  def doi = column[String]("doi")
  def url = column[String]("url")
  def booktitle = column[String]("booktitle")
  def chapter = column[Int]("chapter")
  def edition = column[String]("edition")
  def editor = column[String]("editor")
  def translator = column[String]("translator")
  def journal = column[String]("journal")
  def month = column[Int]("month")
  def number = column[Int]("number")
  def pages = column[String]("pages")
  def publisher = column[String]("publisher")
  def location = column[String]("location")
  def title = column[String]("title")
  def volume = column[String]("volume")
  def year = column[String]("year")
  def raw = column[String]("raw")
  def owner = column[String]("owner") 

  def * = (citation_id ~ pubtype ~ abs ~ keywords ~ doi ~ url ~ booktitle ~ chapter ~   edition ~ editor ~ translator ~ journal ~ month ~ number ~ pages ~ publisher ~ location ~ title ~ volume ~ year ~ raw ~ owner).<>[Citation](Citation,Citation unapply _)
}

但是我们使用上面的代码得到了这个令人讨厌的错误:

Description Resource    Path    Location    Type
overloaded method value <> with alternatives:   (f: (Int, String, String, String,     String, String, String, Int, String, String, String, String, Int, Int, String, String,    String, String, String, String, String, String) => models.Citation,g: models.Citation =>  Option[(Int, String, String, String, String, String, String, Int, String, String, String,  String, Int, Int, String, String, String, String, String, String, String,  String)])scala.slick.lifted.MappedProjection[models.Citation,(Int, String, String, String,  String, String, String, Int, String, String, String, String, Int, Int, String, String,  String, String, String, String, String, String)] <and>   (f: ((Int, String, String, String,  String, String, String, Int, String, String, String, String, Int, Int, String, String,  String, String, String, String, String, String)) => models.Citation,g: models.Citation => Option[(Int, String, String, String, String, String, String, Int, String, String, String, String, Int, Int, String, String, String, String, String, String, String, String)])scala.slick.lifted.MappedProjection[models.Citation,(Int, String, String, String, String, String, String, Int, String, String, String, String, Int, Int, String, String, String, String, String, String, String, String)]  cannot be applied to   (models.Citation.type, models.Citation => Option[(Int, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String)])  Citations.scala /myapp/app/models   line 39 Scala Problem`

这里的默认投影有问题,但我不确定它是什么。我们是在22 arg限制,但如果我们将它缩小到21或20,我们仍会得到相同的错误。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:5)

问题是章节号码字段的类型。这些在您的案例类中定义为 String ,但在表定义中定义为 Int