Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

hibernate TABLE_PER_CLASS, override column

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

hi all
є проблема
фактично потрібно замінити тип колонки в сабкласі. Теоретично треба видали колонку з супер класа.

@Entity
@Table(name = "document_relation")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class DocumentRelation {

		@ManyToOne(targetEntity = Document.class, fetch = FetchType.LAZY)
    @Index(name = "document_id_index")
	@JoinColumn(name="document_id")
	public Document document;

@Entity
@SecondaryTable(name = "document_relation_archive")
@AttributeOverride(name = "document_id", column = @Column(name = "old_document_id",nullable = false, insertable = false, updatable = false))
@DiscriminatorColumn
public class DocumentRelationArchive extends DocumentRelation {

    @ManyToOne(targetEntity = DocumentArchive.class, fetch = FetchType.LAZY)
    @Index(name = "document_id_index")
    @JoinColumn(name="document_id")
    private DocumentArchive documentArchive;

тобто в DocumentRelation є document_id типу Document а в DocumentRelationArchive мены потрібно!!! document_id типу DocumentArchive

AttributeOverride бажаного функціоналу не приніс. Що б я не робив у будь якому випадку виникає ерора про дублювання колонки в класі нащадку(Duplicate property mapping of document found in)

ну що мені робити?

Для чого це все — мені фактично треба здублювати табличку. Дублюється табличка а також функціонал даошки.. і щоб не дублювати ф-онал(:)) даошки мені потрібен цей інхерітенс

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
ну що мені робити?
Подумать :)
Эта фраза:
тобто в DocumentRelation є document_id типу Document а в DocumentRelationArchive мены потрібно!!! document_id типу DocumentArchive
Говорит о сильном “запахе от кода”. Исходя из доступного описания надо убирать наследование.
Дублюється табличка а також функціонал даошки.. і щоб не дублювати ф-онал(:)) даошки мені потрібен цей інхерітенс
Какой еще функционал в “даошке”? При наличии хибера, там будет просто делегирование ему задач (при правильном использовании).
Учитывая что я не знаю полностью вашу задачу, то решение “так чтобы не думать”:
Вынести интерфейс и завязать “ф-онал(:)) даошки” на интерфейс.
.
UPD.
Що б я не робив у будь якому випадку виникає ерора про дублювання колонки в класі нащадку
Не уверен что вообще можно что-то сделать, поскольку в джаве нельзя удать поле суперкласса, то есть аннотация на нет останется так же.

Підписатись на коментарі