使用Ebean玩Scala 2.6:访问Entity字段会使OneToMany关联为空

时间:2018-10-02 18:11:59

标签: scala ebean playframework-2.6

我的模型中有一个OneToMany,我希望(如果可能)无需查询即可访问该字段。或者至少,了解为什么在某些情况下列表为空

@Entity
class Product extends Model {

  @Id
  var id : Long = -1

  @Column
  var price : Float = _

  @Column
  @OneToMany(mappedBy = "product")
  var productImages : java.util.List[ProductImage] = _


  @Column
  @OneToMany(mappedBy = "product")
  var categoryProduct : java.util.List[CategoryProduct] = _

}

@Entity
class ProductImage extends Model {

  @ManyToOne
  var product : Product = _

  @Column
  var id : Long = _

}

在我的scala模板中,我可以@product.productImages.get(0),它可以正常工作。

但是,如果我访问模板中的另一个字段,例如@product.price,那么product.productImages通常是一个空列表,(某些产品,约1或2个,约20个,获取其图像)

为什么获取关联取决于访问实体的其他字段? 为什么某些产品仍会获取其图像?

PS:我以这种方式查询时发现关联已获取:

CategoryProduct.find.query().where().eq("category", cat).setMaxRows(5).findList.asScala.toList
  .map {_.product}

不是这样,当我直接查询产品时:Product.find.query().setMaxRows(20).findList.asScala.toList

1 个答案:

答案 0 :(得分:0)

在这里解释: https://github.com/ebean-orm/ebean/issues/1381

我需要在子bean中添加一个@Id字段。