Код: Выделить всё
@Entity
@Table(name = "person")
@Inheritance(strategy = InheritanceType.JOINED)
public class Person {
@Id
@Column(name = "id", nullable = false, unique = true, length = 20)
private String id;
private String name;
private String lastname;
// ...
}
Код: Выделить всё
@Entity
@PrimaryKeyJoinColumn(name = "extra_id")
public class PersonExtra extends Person {
private String code;
private String subject;
// ...
}
Код: Выделить всё
@Entity
@PrimaryKeyJoinColumn(name = "basic_id")
public class PersonBasic extends Person {
private String range;
}
- Мне бы хотелось, чтобы человек мог быть одновременно и PersonExtra, и PersonBasic.
Как мне структурировать свои объекты JPA, чтобы разные подклассы (PersonExtra и PersonBasic) могли создаваться с тем же идентификатором, что и суперкласс (Person)?
- Я подумал, что, возможно, можно создать отношения «один к одному», такие как Person с PersonExtra и Person с PersonBasic могут работать.
Мне понравилась идея наследования здесь, но, кажется, разве это невозможно в этой ситуации? - Я подумывал об использовании аннотации MappedSuperclass, но разве это не только для абстрактного класса, когда объект не создается в базе данных?
- Или, может быть, мне следует изменить базу данных и создать связь «один ко многим» с ролями? Часть меня думает, что некоторая часть семантики базы данных может быть потеряна, а последующая реализация логики может оказаться сложной.
Подробнее здесь: https://stackoverflow.com/questions/797 ... nheritance
Мобильная версия