У меня есть 2 объекта в nodejs, typeORM в отношении "один ко многим".Есть 3-я таблица отношений, которая содержит связь между двумя объектами.
@Entity({
name: 'meeting_entity',
})
export class MeetingEntity {
@PrimaryColumn()
id: string;
@OneToMany(type => CaseExtensionEntity, caseExtensionEntity => caseExtensionEntity.id, {cascade: true})
@JoinTable({
name: 'meeting_entity_cases',
joinColumns: [
{
name: 'meeting_entity_id'
}
],
inverseJoinColumns: [
{
name: 'cases_id'
}
]
})
cases: CaseExtensionEntity[];
}
@Entity({
name: 'case_extension_entity'
})
export class CaseExtensionEntity {
@PrimaryColumn()
id: string;
@ManyToOne(type => MeetingEntity, meetingEntity => meetingEntity.cases)
meetingEntity: MeetingEntity;
}
И у меня есть 3 таблицы в postgres:
CREATE TABLE test.case_extension_entity
(
id character varying(255) NOT NULL,
CONSTRAINT case_extension_entity_pkey PRIMARY KEY (id)
)
CREATE TABLE test.meeting_entity
(
id character varying(255) NOT NULL,
CONSTRAINT meeting_entity_pkey PRIMARY KEY (id)
)
CREATE TABLE test.meeting_entity_cases
(
meeting_entity_id character varying(255) NOT NULL,
cases_id character varying(255) NOT NULL,
cases_order integer NOT NULL,
CONSTRAINT meeting_entity_cases_pkey PRIMARY KEY (meeting_entity_id, cases_order),
CONSTRAINT meeting_entity_cases_cases_id_fkey FOREIGN KEY (cases_id)
REFERENCES test.case_extension_entity (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT meeting_entity_cases_meeting_entity_id_fkey FOREIGN KEY (meeting_entity_id)
)
В этом сценарии, когда я пытаюсь сохранить MeetingEntity Iполучить это сообщение об ошибке:
ошибка: столбец CaseExtensionEntity.meeting_entity_id не существует
Сохранение объекта:
await getManager().transaction(async transactionalEntityManager => {
await transactionalEntityManager.save(meetingEntity);
});
Когда я удаляю элемент @ManyToOne из CaseExtensionEntity, тогда он работаети он сохраняет и CaseExtensionEntity, и MeetingEntity, но в третьей таблице ничего нет (meeting_entity_cases).Но я хочу сохранить связь между meeting_entity и case_extension_entity и meeting_entity_cases.
Не могли бы вы помочь мне в этом, пожалуйста?Чего мне не хватает?Я провел 2-й день в Google безуспешно.
Редактировать: У меня есть эта устаревшая структура базы данных, которая используется другим приложением.Переход на @ManyToMany с обеих сторон решил мою проблему.Возможно (если вы остаетесь в здравом уме), вам не нужна третья таблица отношений для отношений OneToMany.