2016-03-05 151 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

相關問題