在字段中使用Option[]
时,Squeryl需要零参数构造函数。我意识到如何为Long
0L
创建这样的构造函数,但是如何为Timestamp或Date创建这样的东西呢?
基本上我需要完成这个:
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的模型,这是一个bug,还是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]
答案 0 :(得分:4)
如果startOrder
定义为
val startOrder: Option[java.sql.Timestamp]
在类定义中。我相信,
Some(new java.sql.Timestamp(0))
应该传递给构造函数。
答案 1 :(得分:0)
选项在值是可选的时使用,即可能存在值。只有存在值时,才使用 Some 包装它。但如果没有值,则使用无。