質問

This is a sample code from play2's built-in's 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)
    }
  }
}

Please notice the field keys: project.id, project.folder, project.name.

What does the project part mean? Where is it come from?

Look at the query method:

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

The SQL is select * from project ..., the result should be:

    id    |    folder    |   name

Not:

    project.id    |    project.folder    |    project.name

Why we should specify the keys as project.???, but not field name directly?

How play2 use the project. part?

役に立ちましたか?

解決

As per the code available in here, Anorm Parser uses the string provided to retrieve the given column.

As it gets some metadata, it requires teh full scope of the field (table + name) to work.

他のヒント

IMHO it's just DB alias.

select id, folder, name from project

is the same as

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

or even

select p.id, p.folder, p.name from project p
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top