我有一个扩展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
来完成这项工作。我怎样才能做到这一点?
答案 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
也有利于组合而不是继承,这被认为是一种很好的做法。