视图

我们使用 @View 使实体映射到数据库视图。

@Entity
@View(name = "order_vw", dependentTables = {"o_order", "o_order_detail"})
public class MyOrderView {
  // fields, accessors etc
}

请注意,我们不需要映射 @Id 属性(实际上,我们也不需要为普通实体映射一个)。

从表

如果我们在基于视图的实体上启用 L2 缓存,那么我们应该通过 dependentTables 指定视图使用的基础表。当这些表的数据被修改时,这将自动使该视图的 L2 缓存失效。

定义视图的额外 DDL

为了让 ebean 执行 DDL 来创建数据库视图,我们需要额外有一个 extra-ddl.xml。有关更多详细信息,请参阅 文档 / extra-ddl

  
  

  
      drop view order_agg_vw if exists;
  

  
    create or replace view order_agg_vw as
    select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
           sum(d.ship_qty * d.unit_price) as ship_total
    from o_order_detail d
    group by d.order_id