Play Framework - 如何从超类继承?

时间:2012-11-19 03:52:30

标签: java playframework playframework-2.0 ebean

我有一个扩展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来完成这项工作。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

要使User表格具体,您可以使用@Inheritance注释。有关此问题的讨论,请参阅Play Framework 2 Ebean and InheritanceType as JOINED

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

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