2016-03-09 7 views
1

В Scala, я следующий Scala случае класс:не удается получить доступ к полю с СОРМОМ

case class Page(url: String) 

object Page { 
    implicit val personFormat = Json.format[Page] 
} 

, который закодирован в базе данных, как это:

object Db extends Instance(entities = Seq(Entity[Page]()), url="jdbc:h2:mem:test") 

Затем я получить один экземпляр из в базе данных вот так:

val page = Db.query[Page].whereEqual("id", pageId).fetch 
val content: String = new URL(page.url).getContent().toString 

Однако на последней строке я получаю.

value url is not a member of Stream[models.Page with sorm.Persisted] 

Почему нет url нет пользователя?

Я создал представление базы данных для Page. Не должны ли включать все его поля?

ответ

1

Это должно быть, как это

package models 

import sorm._ 
import play.api.libs.json.{JsValue, Writes, Json} 

case class Page(url: String) 

object Page { 
    implicit val writes = Json.writes[Page] 
    implicit val reads = Json.reads[Page] 
} 

object DB extends Instance(Set(Entity[Page]()), "jdbc:h2:mem:test") 


def pages = Action { 
    val pages = DB.query[Page].fetch() 
    Ok(Json.toJson(pages)) 
} 

def addPage = Action(parse.json) { request => 
    val page = DB.save(request.body.as[Page]) 
    Ok(Json.toJson(page)) 
} 
Смежные вопросы