Вы можете достичь этого так:
@Entity
public class PersonIdentification {
// primary key
@Id // and other annotations, see JPA Spec or tutorials
private long id;
// regular attributes
private Date dateOfBirth;
private String cityOfBirth;
private Boolean isUSCitizen;
private String address1;
private String address2;
private String addressCity;
private String postalCode;
@ManyToOne
private StateCode birthStateCode;
@ManyToOne
private StateCode addressStateCode;
@ManyToOne
private CountryCode birthCountryCode;
@ManyToOne
private CountryCode addressCountryCode;
@ManyToOne
private CountryCode citizenshipCountryCode;
// setter & getter methods as needed...
}
Затем определите классы сущностей для обоих типов «Код» как:
@Entity
public class StateCode {
// primary key
@Id // and other annotations, see JPA Spec or tutorials
private long id;
private String code;
private String stateName;
// other attributes of interest
// setter & getter methods as needed...
}
@Entity
public class CountryCode {
// primary key
@Id // and other annotations, see JPA Spec or tutorials
private long id;
private String code;
private String countryName;
// other attributes of interest
// setter & getter methods as needed...
}
Чтобы уменьшить CnP-код (как в случае общего аспекта обработки первичного ключа (@Id
), вы можете проверить этот ответ . Он дает подробные советы о том, как более эффективно обрабатывать такие случаи, вводя AbstractEntity
через аннотацию @MappedSuperClass
.
Надеюсь, это поможет