Как понять результат парсер анорм плей2? - PullRequest
2 голосов
/ 05 февраля 2012

Это пример кода из zentasks встроенной в play2:

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.?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

Согласно коду, доступному в здесь , Anorm Parser использует строку, предоставленную для извлечения данного столбца.

Поскольку он получает некоторые метаданные, для его работы требуется полный объем поля (таблица + имя).

0 голосов
/ 06 февраля 2012

ИМХО это просто псевдоним БД.

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
...