【问题标题】:Play framework + ebean: Nested models are being saved as nullPlay framework + ebean:嵌套模型被保存为空
【发布时间】:2014-09-10 18:19:14
【问题描述】:

我认为这是一个简单的问题: 例如,我有两个模型;

@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() 处设置断点,我看到该实例的用户字段设置正确。

这是怎么回事?

【问题讨论】:

  • 来自here:“增强直接 Ebean 字段访问(启用延迟加载)仅适用于 Java 类,不适用于 Scala”。使用 getter/setter。

标签: java playframework persistence ebean


【解决方案1】:

感谢@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
  }
}

【讨论】:

    猜你喜欢
    • 2013-01-25
    • 2014-07-20
    • 2017-02-02
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2017-05-22
    相关资源
    最近更新 更多