2014-09-10 47 views
0

我認爲這是一個簡單的問題: 我有兩個模型,例如;播放框架+ ebean:嵌套模型正在保存爲空

@Entity 
case class User(name: String, email: String) extends Model { 
    @Id 
    var id: Int = 0 
} 

然後;

@Entity 
case class Task(
    subject: String, 
    body: String, 
    @ManyToOne 
    user: User) extends Model { 
    @Id 
    var id: Int = 0 
} 

我看到的是,當我獲取所有任務從數據庫(find().all()),我看到user = null所有任務,在調試時,如果我在newTask.save()設置斷點,我看到用戶字段該實例的設置正確。

這是怎麼回事?

+0

從[這裏](https://www.playframework.com/documentation/2.4.x/JavaEbean):「直接Ebean字段訪問增強(允許延遲加載)僅適用於Java類,不到斯卡拉「。使用getters/setters。 – Salem 2014-09-10 21:13:27

回答

0

謝謝@Salem,基本上,他指出的link就足以知道發生了什麼 - 而且通常這可能有點混亂。

我所做的是爲引用定義一個getter/setter; 所以像Task這樣的事情會做;

@Entity 
case class Task (subject: String, body: String) { 
    val userId: Int = 0 
    // setter 
    def user_= (user: User) = userId = user.id 
    // getter 
    def user:User = { 
    User.find().byId(userId) // ensure find() is defined in the companion object 
    } 
}