Playframework 如何理解play2的anorm的结果解析器?

Playframework 如何理解play2的anorm的结果解析器?,playframework,playframework-2.0,anorm,Playframework,Playframework 2.0,Anorm,这是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~

这是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

项目部分是什么意思?它是从哪里来的

请看查询方法:

  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
不是:

为什么我们应该将键指定为项目,而不是直接指定字段名


play2如何使用该项目。部分

IMHO它只是一个DB别名

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

我知道这只是DB别名

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

根据中提供的代码,Anorm解析器使用提供的字符串检索给定列


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

根据中的可用代码,Anorm解析器使用提供的字符串检索给定列


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

对不起,它们不是DB别名。这取决于jdbc驱动程序的rs.getMetaData.getTableNamecol方法。抱歉,它们不是DB别名。它取决于jdbc驱动程序的rs.getMetaData.getTableNamecol方法。