3

我使用 slick2.0 和 postgresql 数据库:

我的数据模型是:

class User(tag: Tag) extends Table[(Int, String,String, String,Date,String,Long,   Int)](tag, "User") {
def id = column[Int]("ID", O.PrimaryKey)
def first_name = column[String]("First_Name")
def second_name=column[String]("Second_Name")
def email=column[String]("Email")
def datebirth=column[Date]("Birth_date")
def password=column[String]("Password")
def addID = column[Long]("ADRESS")
//  def shopID =column[Int]("Shop")
def privilege=column[Int]("privilege")
def * = (id, first_name, second_name, email, datebirth, password, addID, privilege)
// def home_address=foreignKey("ha_FK", addID, address)(_.id)
//  def link_shop=foreignKey("sh_FK", shopID, shop)(_.id)
}
val user=TableQuery[User]

在我的 Global.scala 上:

(user.ddl).create          -----line 67

错误是:

 play.api.UnexpectedException: Unexpected exception[NullPointerException: null]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anon
fun$1.apply(ApplicationProvider.scala:148) ~[play_2.10-2.2.1.jar:2.2.1]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anon
fun$1.apply(ApplicationProvider.scala:112) ~[play_2.10-2.2.1.jar:2.2.1]
    at scala.Option.map(Option.scala:145) ~[scala-library-2.10.3.jar:na]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply
(ApplicationProvider.scala:112) ~[play_2.10-2.2.1.jar:2.2.1]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply
(ApplicationProvider.scala:110) ~[play_2.10-2.2.1.jar:2.2.1]
    at scala.util.Success.flatMap(Try.scala:200) ~[scala-library-2.10.3.jar:
na]
Caused by: java.lang.NullPointerException: null
    at scala.slick.profile.RelationalProfile$TableQueryExtensionMethods.ddl(
RelationalProfile.scala:41) ~[slick_2.10-2.0.1.jar:2.0.1]
    at InitialData$$anonfun$insert$1.apply(Global.scala:67) ~[na:na]   ------------here is the    user.dll.create and here is the error.
    at InitialData$$anonfun$insert$1.apply(Global.scala:61) ~[na:na]
    at scala.slick.backend.DatabaseComponent$DatabaseDef$class.withSession(D
atabaseComponent.scala:31) ~[slick_2.10-2.0.1.jar:2.0.1]
    at scala.slick.jdbc.PlayDatabase.withSession(PlayDatabase.scala:6) ~[pla
y-slick_2.10-0.6.0.1.jar:2.0.1]
    at InitialData$.insert(Global.scala:60) ~[na:na]  

为什么当我创建数据表时出现错误,出现 NullPointerException

4

1 回答 1

3

如果您将TableQuery声明从以下位置更改,这看起来是一个初始化顺序问题:

val user=TableQuery[User]

至:

def user=TableQuery[User]

这应该可以解决问题。

于 2014-09-04T11:30:14.683 回答