2014-09-10 35 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 
    } 
}