2

这是 play2 内置 zentasks 的示例代码:

object Project {

  // -- Parsers

  /**
   * Parse a Project from a ResultSet
   */
  val simple = {
    get[Pk[Long]]("project.id") ~
    get[String]("project.folder") ~
    get[String]("project.name") map {
      case id~folder~name => Project(id, folder, name)
    }
  }
}

请注意字段键:project.id, project.folder, project.name

部分是什么project意思?它来自哪里?

看查询方法:

  def findById(id: Long): Option[Project] = {
    DB.withConnection { implicit connection =>
      SQL("select * from project where id = {id}").on(
        'id -> id
      ).as(Project.simple.singleOpt)
    }
  }

SQL 是select * from project ...,结果应该是:

    id    |    folder    |   name

不是:

    project.id    |    project.folder    |    project.name

为什么我们应该将键指定为project.???,而不是field name直接指定?

play2如何使用该project.部分?

4

2 回答 2

0

恕我直言,这只是数据库别名。

select id, folder, name from project

是相同的

select project.id, project.folder, project.name from project

甚至

select p.id, p.folder, p.name from project p
于 2012-02-06T13:46:29.030 回答
0

根据此处提供的代码,Anorm Parser 使用提供的字符串来检索给定的列。

当它获取一些元数据时,它需要完整的字段范围(表+名称)才能工作。

于 2012-02-09T15:10:02.263 回答