powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA наследование сущности с сохранением конфигурации
4 сообщений из 4, страница 1 из 1
JPA наследование сущности с сохранением конфигурации
    #38570629
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структура объектов с использованием Spring Data JPA.

Есть таблица RELATION - содержит экземпляры связей всех типов с общими для всех связей полями
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Entity
@Table(name="RELATION")
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Relation implements Serializable {
	private long id;
	@Id
	@SequenceGenerator(name="RELATION_ID_GENERATOR", sequenceName="SEQ", allocationSize=1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="RELATION_ID_GENERATOR")
	@Column(updatable=false)
	public long getId() { return this.id; }
...



Есть детализирующие таблицы, описывающих дополнительные поля различных типов связей, у которых первичный ключ связан внешним ключом с RELATION, например
Код: java
1.
2.
3.
4.
@Entity
@Table(name="SIMPLE_RELATION")
public class SimpleRelation extends Relation {
...



В программе я использую экзепляры SimpleRelation, например, когда я сохраняю SimpleRelation, то прокси автоматически создает запись в двух таблицах RELATION и SIMPLE_RELATION.

Все было нормально пока у каждого типа связи была своя детализирующая таблица, но понадобилось создать абстрактные связи, у которых нет детализирующей таблицы - только запись в RELATION.
Сам объект Relation я создать не могу - он абстрактный. Делать его неабстрактным тоже не хочется, т.к. уже структурированы абстрактные методы и иерархия и менять это нежелательно.

Можно ли каким-то образом создать потомка от класса Relation, который будет реализовывать абстрактные методы, тоже будет являться сущностью но все параметры сущности будет наследовать от суперкласса и реализовываться проксей как будто-то бы это и есть суперкласс.
...
Рейтинг: 0 / 0
JPA наследование сущности с сохранением конфигурации
    #38570649
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
publexusВсе было нормально пока у каждого типа связи была своя детализирующая таблица, но понадобилось создать абстрактные связи, у которых нет детализирующей таблицы - только запись в RELATION.
Сам объект Relation я создать не могу - он абстрактный. Делать его неабстрактным тоже не хочется, т.к. уже структурированы абстрактные методы и иерархия и менять это нежелательно.
Сами себе создаёте трудности, чтобы успешно с ними бороться? Если вам нужны абстрактные методы, от отделите сущность от них, чтобы использовать отдельно.
...
Рейтинг: 0 / 0
JPA наследование сущности с сохранением конфигурации
    #38570667
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Даже если отделить абстрактные методы от Relation и реализовать их в виде интерфейса это не решает проблемы. Все равно у Realtion есть некоторые общие для всех типов связи свойства и методы. И для новых связей без детализированной таблицы все равно придется наследовать их от Relation, чтобы не переписывать их в каждом классе. У разных связей будет разное поведение, даже несмотря на то, что в БД они находятся в одной и той же таблице.

Я может быть неправильно выразился, основная проблема заключается в том чтобы создать наследника Relation со скопированной конфигурацией JPA.

Может поиграться с Embeddable?
...
Рейтинг: 0 / 0
JPA наследование сущности с сохранением конфигурации
    #38571338
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
publexusBlazkowicz,

Даже если отделить абстрактные методы от Relation и реализовать их в виде интерфейса это не решает проблемы. Все равно у Realtion есть некоторые общие для всех типов связи свойства и методы. И для новых связей без детализированной таблицы все равно придется наследовать их от Relation, чтобы не переписывать их в каждом классе. У разных связей будет разное поведение, даже несмотря на то, что в БД они находятся в одной и той же таблице.

Я может быть неправильно выразился, основная проблема заключается в том чтобы создать наследника Relation со скопированной конфигурацией JPA.

Может поиграться с Embeddable?

Лучше не надо.
1) Данные в БД это не объекты.
Соответственно понятие "наследование" тут не применимо.
Даже если поля таблиц совпадают, то все равно это разные таблицы, соответственно разные сущности в ORM.
2) Если нужны наследование и прочие "плюшки" ООП, то нужно отказаться от отображение этих классов на сущности БД.
Т.е. просто создаете свою иерархию классов, а данные берете из БД (не важно как, можно даже нативным JDBC пользоваться)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA наследование сущности с сохранением конфигурации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]