2015-05-30 130 views
0

我的项目有3种类型的用户。一种类型具有其他两种类型的所有属性。我有一个实体调用用户。并且我从User扩展UserType1和UserType2。我希望Type1和Type2的所有属性都在Type3中。我怎样才能在JPA实体中做到这一点。创建多种类型的jpa实体

+2

提供一些现有的代码将非常有帮助! – Gosu

+0

扩展到您的实体,否则继续使用JPA接口提供的@Inheritance(strategy = InheritanceType.JOINED)注释 –

回答

1

Java不支持多重继承。所以你不能在Type3中扩展Type1和Type2。 您可以使用嵌入式对象(又名组件)。 @实体 公共课程订单{0}私人长ID; public long getId(){return id; } public void setId(Long id){this.id = id; }

@Embedded private Address address; 
    public Address getAddress() { return address; } 
    public void setAddress() { this.address = address; } 
} 

@Entity 
public class User { 
    private Long id; 
    @Id public Long getId() { return id; } 
    public void setId(Long id) { this.id = id; } 

    private Address address; 
    @Embedded public Address getAddress() { return address; } 
    public void setAddress() { this.address = address; } 
} 

@Embeddable 
@Access(AcessType.PROPERTY) 
public class Address { 
    private String street1; 
    public String getStreet1() { return street1; } 
    public void setStreet1() { this.street1 = street1; } 

    private hashCode; //not persistent 
} 

既然你已经嵌入两个实体,那么你必须使用@AttributeOverrides重写只有某些领域和UserType1和UserType2都扩展用户。 @AttributeOverrides,要求每个属性单独重写。