2012-03-28 44 views
0

当在字段中使用Option[]时,Squeryl需要一个零参数构造函数。我意识到我可以如何为Long创建这样的构造函数,如0L,但是如何为时间戳或日期创建这样的事物?斯卡拉timestamp /日期零参数构造函数?

基本上我需要完成这样的:

def this() = this(0L,"",TIMESTAMP,TIMESTAMP,0L,"","","","",Some(""),Some(""),"",DATE,DATE,false,false,false,Some(0L),Some(0),Some(0L)) 

下面是我最初是如何发现的时间戳和日期的问题。

背景

收到以下错误在我玩游戏! 2.0 Scala的应用(也使用Squeryl):

Caused by: java.lang.RuntimeException: Could not deduce Option[] type of field 'startOrder' of class models.Job

此字段在models.Job:

@Column("start_order") 
var startOrder: Option[Int], 

而Postgres DB它被定义为integer。 Play中有不同的处理! 2.0的模型,这是一个错误,或者它是一个Squeryl问题?谢谢!

堆栈跟踪,貌似Squeryl问题

Caused by: java.lang.RuntimeException: Could not deduce Option[] type of field 'startOrder' of class models.Job 
     at scala.sys.package$.error(package.scala:27) ~[scala-library.jar:na] 
     at scala.Predef$.error(Predef.scala:66) ~[scala-library.jar:0.11.2] 
     at org.squeryl.internals.FieldMetaData$$anon$1.build(FieldMetaData.scala:441) ~[squeryl_2.9.1-0.9.4.jar:na] 
     at org.squeryl.internals.PosoMetaData$$anonfun$3.apply(PosoMetaData.scala:111) ~[squeryl_2.9.1-0.9.4.jar:na] 
     at org.squeryl.internals.PosoMetaData$$anonfun$3.apply(PosoMetaData.scala:80) ~[squeryl_2.9.1-0.9.4.jar:na] 
     at scala.collection.immutable.HashMap$HashMap1.foreach(HashMap.scala:176) ~[scala-library.jar:0.11.2] 

回答

4

如果startOrder在类定义定义为

val startOrder: Option[java.sql.Timestamp] 

。我相信,

Some(new java.sql.Timestamp(0)) 

应传递给构造函数。

+0

啊完美,我想'有些()'必须包裹它,但是我对包装它感到困惑,谢谢! – crockpotveggies 2012-03-28 06:08:47

0

当值是可选的,也就是说,如果有可能的值或者不选使用。只有在有价值的情况下,您才会使用一些将其包装。但如果没有价值,则使用