Суперкласс Entity неявно создан?

У меня есть Entity, Customer, которая расширяет свой суперкласс Entity, User. Пользователь имеет тип наследования JOINED и содержит столбец первичного ключа.

Если я создам и сохраняю экземпляр Customer, будет ли он неявно создавать и сохранять соответствующий экземпляр User? Если нет, то как правильно создать и сохранить экземпляр Customer?


person chRyNaN    schedule 02.04.2015    source источник
comment
вы используете спящий режим.?   -  person Saif    schedule 02.04.2015
comment
Нет, я не использую спящий режим. Просто ЯПА.   -  person chRyNaN    schedule 02.04.2015
comment
Можете ли вы предоставить несколько примеров кода/аннотаций, используемых в объекте, и сообщить нам, работает он или нет?   -  person Aninda Bhattacharyya    schedule 02.04.2015
comment
Объединенное наследование означает наличие двух таблиц, представляющих подкласс. Поэтому, когда вы сохраняете Customer, JPA вставит строку во все родительские таблицы, которые вместе образуют экземпляр Customer.   -  person Chris    schedule 02.04.2015
comment
@Chris, так что ответ на мой вопрос: да, он также создаст и сохранит экземпляр суперкласса?   -  person chRyNaN    schedule 02.04.2015
comment
Не совсем, поскольку вы называете это несколькими экземплярами, «экземпляра» суперкласса не существует. Клиент является одновременно Клиентом и Пользователем - существует только один экземпляр. На уровне базы данных ваш экземпляр клиента будет отображаться в две таблицы, и в обеих будет строка для поддержки этого экземпляра клиента. Я хотел внести ясность, поскольку некоторые авторы считают, что вы можете изменить типы java, переключая флаги и т. д.   -  person Chris    schedule 02.04.2015
comment
Я понимаю. Я понимаю, как работает структура таблицы, поэтому, возможно, мне следовало сформулировать ее по-другому. Я просто хотел убедиться, что поставщик постоянства будет обрабатывать сопоставление. И кажется, что это так.   -  person chRyNaN    schedule 02.04.2015


Ответы (1)


Если все сопоставления верны, это должно работать
также проверьте, что @PrimaryKeyJoinColumn (annotation based) добавлен в дочерний класс

Если вам нужна дополнительная информация и помощь в поиске One Table Per Subclass Inheritance, потому что вы используете это, я думаю.

person Saif    schedule 02.04.2015
comment
Если для подкласса в стратегии сопоставления JOINED не указана аннотация PrimaryKeyJoinColumn, предполагается, что столбцы внешнего ключа имеют те же имена, что и столбцы первичного ключа первичной таблицы суперкласса Источник Поэтому @PrimaryKeyJoinColumn не нужен. - person chRyNaN; 02.04.2015