Связи entity в JPA. Возможны ли две сущности для одной таблицы?

Хочу такую структуру в java:
Абстрактный родитель со стандартным набором полей (id, name, etc). От него наследуются entity и опционально добавляют свои поля.

В базе нужно чтобы вышло так:
Одна общая таблица для всех entity наследуемых от Parent, а для тех которые добавили свои поля отдельные таблицы с политикой InheritanceType.JOINED.

5c816452a05fc787999345.png
Т.е. для такого набора классов в базе должно быть 2 таблицы:
parent и ch3 которая имеет только id(ссылка на таблицу parent) и extensionValue.

Вот так добавился почти рабочей схемы:
Один абстрактный с @MappedSuperclass, от него два абстрактных с разными политиками наследования, а он них уже конечные классы, но всё-ровно не работает.

Но хотелось бы без костылей.
  • Вопрос задан
  • 371 просмотр
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Здравствуйте!
Я относительно недавно начал изучать Spring Boot. И самому тоже интересно. А так я решил этот вопрос следующим образом. В моем случае это 3 Entity - User, Customer, Author.

@Entity
@Data
@Table(name = "users")
@Inheritance(
        strategy = InheritanceType.JOINED
)
public class User {
	@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long userId;
    private String userEmail;
    private String userPassword;
    // getters setters etc.
}


@Entity
@Getter @Setter
@Table(name = "customers")
public class Customer extends User {
	private String customerData;
}


@Entity
@Getter @Setter
@Table(name = "authors")
public class Author extends User {
	private String authorData;
}


И в таком случае, вы получите 3 таблицы. Одна общая - User + 2 таблицы для Customer & Author, в которых будет ID из Entity User + доп. поля из дочерних таблиц. Вы это имели ввиду?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
24 сент. 2021, в 22:21
10000 руб./за проект
24 сент. 2021, в 22:19
1000 руб./в час
24 сент. 2021, в 22:18
3000 руб./за проект