无法使用 sorm 访问字段

Posted

技术标签:

【中文标题】无法使用 sorm 访问字段【英文标题】:Can not access field with sorm 【发布时间】:2016-03-09 15:09:40 【问题描述】:

在 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))

【讨论】:

以上是关于无法使用 sorm 访问字段的主要内容,如果未能解决你的问题,请参考以下文章

播放框架 sorm intellij - 无法解析符号 sorm

如何从 SORM 表定义中排除类字段?

是否可以向 SORM 添加瞬态字段?

在 Play Framework 2.3.8 中使用 SORM

SORM 和 trait 作为字段类型

如果使用 sorm,如何处理架构更改