【问题标题】:SormException unsupported typeSormException 不支持的类型
【发布时间】:2016-03-05 15:46:28
【问题描述】:

我有以下型号:

package models

import java.net.URL
import play.api.Logger
import play.api.libs.json.Json

case class Page(url: String) {
  var content: String = new URL(url).getContent().toString
  Logger.info("Content is: " + content)
}

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

数据库表示代码是这样的:

package models

import sorm._

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

我收到以下错误:

[error] - play.core.server.netty.PlayDefaultUpstreamHandler - Cannot invoke the action
[info] java.lang.RuntimeException: java.lang.ExceptionInInitializerError

堆栈跟踪稍低:

[info] Caused by: sorm.core.SormException: Unsupported type: (x$1: String)scala.Unit
[info]  at sorm.mappings.MappingKind$.apply(MappingKind.scala:85) ~[sorm-0.3.19.jar:na]
[info]  at sorm.mappings.Mapping$.apply(Mapping.scala:69) ~[sorm-0.3.19.jar:na]
[info]  at sorm.mappings.Mapping$.apply(Mapping.scala:97) ~[sorm-0.3.19.jar:na]
[info]  at sorm.mappings.EntityMapping$$anonfun$properties$1.apply(EntityMapping.scala:18) ~[sorm-0.3.19.jar:na]
[info]  at sorm.mappings.EntityMapping$$anonfun$properties$1.apply(EntityMapping.scala:18) ~[sorm-0.3.19.jar:na]

因此,我认为 Sorm 存在问题,但我无法意识到问题所在。

我不确定 Sorm 是如何工作的,但我怀疑它不支持字符串?

【问题讨论】:

    标签: scala playframework sorm


    【解决方案1】:

    只需删除构造函数中的奇怪内容,一切都会好起来的。根据定义,模型应该只与数据有关。您已经植入了从某个 URL 获取的副作用,无论从设计角度来看,这都是一个错误。

    【讨论】:

    • 所以说我想向用户展示页面的内容。我应该在哪里从页面获取数据?在模型中的其他方法或控制器中的某些操作中?
    • 控制器肯定。
    • 好的,(我知道我有点偏离重点了)但是 MVC 不应该在模型中拥有大部分逻辑吗?
    • 模型只是数据。就是这样。控制器通过操纵和处理该数据以呈现视图并产生响应来响应请求。因此,一切都发生在控制器中。
    猜你喜欢
    • 2021-10-21
    • 2021-05-26
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多