我是hibernate的新手。我正在尝试存储一种具有一种地址(国内或国际地址)的人。我理解下面的例子对某些人来说可能看起来很糟糕。我们假设这是要求。
我可以使用@Embedded存储一种类型的地址,但我必须说明DomesticAddress或InternationalAddress,但不是地址。
我读了这个post。我认为我的pojo结构并非不合理。有可能吗?
人员表
id - INT - AUTO-ID
email - VARCHAR
address1 - VARCHAR
address2 - VARCHAR
address3 - VARCHAR
city - VARCHAR
state - VARCHAR
zip - VARCHAR
country - VARCHAR
Person.java
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String email;
// this works, but does not work for international address!
@Embedded
private DomesticAddress address;
// this works, but does not work for international address!
@Embedded
@Target(DomesticAddress.class)
private Address address;
// this does not work; being ignored!
@Embedded
private Address address;
....
}
注意:地址仅被声明一次。我只想在3种不同的版本中展示它。
Address.java
public interface Address {
....
}
DomesticAddress.java
@Embeddable
public class DomesticAddress implements Address {
private String address1;
private String address2;
private String city;
private String state;
private String zip;
....
}
InternationalAddress.java
@Embeddable
public class InternationalAddress implements Address {
private String address1;
private String address2;
private String address3;
private String country;
....
}