0
我的項目有3種類型的用戶。一種類型具有其他兩種類型的所有屬性。我有一個實體調用用戶。並且我從User擴展UserType1和UserType2。我希望Type1和Type2的所有屬性都在Type3中。我怎樣才能在JPA實體中做到這一點。創建多種類型的jpa實體
我的項目有3種類型的用戶。一種類型具有其他兩種類型的所有屬性。我有一個實體調用用戶。並且我從User擴展UserType1和UserType2。我希望Type1和Type2的所有屬性都在Type3中。我怎樣才能在JPA實體中做到這一點。創建多種類型的jpa實體
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,要求每個屬性單獨重寫。
提供一些現有的代碼將非常有幫助! – Gosu
擴展到您的實體,否則繼續使用JPA接口提供的@Inheritance(strategy = InheritanceType.JOINED)註釋 –