创建几种类型的jpa实体

时间:2015-05-30 06:49:06

标签: java java-ee jpa

我的项目有3种类型的用户。一种类型具有其他两种类型的所有属性。我有一个实体呼叫用户。我从User扩展了UserType1和UserType2。我希望Type1和Type2的所有属性都在Type3中。我怎么能在JPA实体中做到这一点。

1 个答案:

答案 0 :(得分:1)

Java不支持多重继承。所以你不能在Type3中扩展Type1和Type2。     您可以使用嵌入对象即组件。     @实体     公共类订单{        @Id private Long 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都扩展User。 @AttributeOverrides,要求单独覆盖每个属性。