Play Framework – 如何从超类inheritance?

我有一个扩展Model的User类,以及我想扩展User类的两个类。

User.java:

@Entity @Table(name = "users") public class User extends Model implements RoleHolder { private static final long serialVersionUID = 1L; @Id public Long id; ... 

Driver.java:

 public class Driver extends User { ... 

Customer.java:

 public class Customer extends User { ... 

编辑需要直接访问所有三个实体。 换句话说,我有用户,客户和司机; 客户和驱动程序碰巧共享用户的所有属性。 因此,我需要有一个有效的用户实体以及客户和驱动程序。

我需要能够获得所有用户(包括客户和驱动程序)的列表。

我无法弄清楚如何在Play中使用ebean来完成这项工作。 我怎样才能做到这一点?

要使User表具体,可以使用@Inheritance注释。 有关讨论,请参阅Play Framework 2 Ebean和InheritanceType作为JOINED 。

也可以使用@OneToOne手动为驱动程序和客户加入辅助表。

使用@OneToOne也有利于组合而不是inheritance,这被认为是一种很好的做法。

这可能是MappedSuperClass注释的用例。 有关文档,请参见http://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html 。 据推测,这是由Ebean支持的,尽管缺乏关于它的文档。