Я использую TypeORM в своем проекте Node + React + MySQL для управления сущностями.
Мне нужно вставить повторяющиеся записи в таблицы, имеющие отношение родитель-потомок.
Отношение иерархия выглядит следующим образом:
Таблица A
Таблица B (дочерний элемент A)
Таблица C (дочерний элемент B),
Кроме того, Таблица C имеет отношения родитель-потомок с самим собой.
Структура сущностей выглядит следующим образом:
Таблица A
@PrimaryGeneratedColumn({
type: 'int',
unsigned: true,
name: 'id',
})
id: number;
@Column('varchar', {
nullable: false,
length: 250,
name: 'title',
})
title: string;
@OneToMany(() => B, (b: B) => b.a, {
onDelete: 'CASCADE' ,
onUpdate: 'CASCADE',
})
bs: B[];
Таблица B
@PrimaryGeneratedColumn({
type: 'int',
unsigned: true,
name: 'id',
})
id: number;
@ManyToOne(() => A, (a: A) => a.bs,
{ nullable: false, onDelete: 'CASCADE', onUpdate: 'CASCADE' })
@JoinColumn({ name: 'a_id'})
a: A | null;
@OneToMany(() => C, (c: C) => c.b, {
onDelete: 'CASCADE',
onUpdate: 'CASCADE',
})
cs: C[];
Таблица C
@PrimaryGeneratedColumn({
type: 'int',
unsigned: true,
name: 'id',
})
id: number;
@ManyToOne(() => B, (b: B) => b.cs,
{ nullable: true, onDelete: 'CASCADE', onUpdate: 'CASCADE' })
@JoinColumn({ name: 'b_id'})
b: B | null;
@ManyToOne(() => C, (c: C) => c.cs,
{ nullable: true, onDelete: 'CASCADE', onUpdate: 'CASCADE' })
@JoinColumn({ name: 'parent_id'})
parent: C | null;
@OneToMany(() => C, (c: C) => c.parent, {
onDelete: 'CASCADE',
onUpdate: 'CASCADE',
})
cs: C[];
Итак, вот задача, которую я должен чтобы сделать ... Мне нужно дублировать некоторые записи Table B
(& записи в дочерней таблице C также должны дублироваться с новым сгенерированным b_id), у меня будет массив b_id.
Также обратите внимание, что Table C
имеет отношения ManyToOne и OneToMany с самим собой.
Я могу сделать это с количеством циклов, но должен быть какой-то способ использовать se отношения между таблицами.
Итак, как я могу дублировать записи, используя TypeORM?
Заранее спасибо .....