2016-03-05 97 views
0

我有以下型号:SormException不受支持的类型

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是如何工作的,但我怀疑它不支持字符串?

回答

1

只是删除你在构造函数中的怪异东西,你都很好。模型的定义应该只是关于数据。您已经植入了从某个URL获取副作用,这从设计角度来看都是错误的。

+0

所以说我想向用户显示页面的内容。我应该从哪里获取页面中的数据?在模型中的另一种方法或控制器中的某个动作中? – octavian

+1

控制器肯定。 –

+0

好的,(我知道我正在远离主要观点),但是不应该MVC在模型中拥有最多逻辑? – octavian

相关问题