Расширение спящих сущностей с помощью аннотации - PullRequest
8 голосов
/ 10 февраля 2011

Мне нужно расширить сущность с теми же характеристиками, не используя абстрактные классы.

Могу ли я кодировать что-то вроде ниже?

@Entity
@Table(name="ABC")
@SequenceGenerator(sequenceName="SEQ_ABC",name="idGenerator",allocationSize=1)
public class Abc {
.. // define members
}

@Entity
@Table(name="EX_ABC")
public class ExAbc extends Abs {
.. // define extras..
}

спасибо заранее

Ответы [ 2 ]

17 голосов
/ 10 февраля 2011

Да, этот работает без проблем. Однако вы должны взглянуть на аннотацию наследования .

В чем проблема: у вас есть таблица «Abc», которая содержит field1, filed2; Тогда у вас есть ExAbc, который содержит поля "Abc" и в поле adition3. Теперь, если вы думаете с точки зрения баз данных, что эта система должна делать с этими двумя классами? Поместите их в одну таблицу, указав field3 = null для всех строк типа «Abc»? или положить их в две разные таблицы? или поместите общие поля в одну таблицу и создайте второе для дополнительного filed3?

Каждое решение имеет свои преимущества и недостатки, которые вы можете прочитать по ссылке, которую я разместил, и решать, какой из них наилучший.

(по умолчанию, я думаю, это объединенная стратегия, однако я бы не рассчитывал на то, что так будет для каждой базы данных)

0 голосов
/ 15 апреля 2013
...