Я довольно новичок в Hibernate и JPA.У меня есть класс Identity, который имеет отношение один к одному с EntityInformation, который подклассами является либо PersonalInformation, либо CompanyInformation.
Я пытаюсь использовать стратегию Joined table, чтобы оставаться СУХОЙ, чтобы основаТаблица EntityInformation в базе данных имеет общие поля, в то время как таблицы PersonalInformation и CompanyInformation имеют только специфичные для класса поля
Когда я создаю идентификатор с типом «Компания», я хочу создать CompanyInformation для этого идентификатора.У меня проблема в том, что при создании Identity сохраняется EntityInformation, а не Personal / CompanyInformation.
Возможно ли это?Я чувствую, что упускаю что-то или мне нужно моделировать вещи по-другому.Любая помощь будет принята с благодарностью!
Вот мой класс Identity:
@Entity
@Table(name = "identities")
public class Identity {
@NotNull
@Enumerated(EnumType.STRING)
// type is either Personal or Company
private IdentityType type;
@NotNull
@OneToOne(
mappedBy = "identity", cascade = CascadeType.ALL, orphanRemoval = true, optional = false)
private EntityInformation entityInformation;
...
}
Класс EntityInformation:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "entity_informations")
public class EntityInformation {
@NotNull private Boolean hasTaxPayerId;
@OneToOne(optional = false)
@JoinColumn(name = "identity_id", nullable = false)
private Identity identity;
...
}
Класс PersonalInformation:
public class PersonalInformation extends EntityInformation{
@NotBlank private String firstName;
@NotBlank private String lastName;
private String middleName;
...
}
CompanyInformation класс:
public class CompanyInformation extends EntityInformation{
@NotBlank private String name;
...
}