【发布时间】:2020-09-07 04:28:38
【问题描述】:
我有一个名为 Entry 的实体,它与另一个名为 Image 的实体关联为 Many2Many。
Entry 和 Image 关系如下所示:
@Entity('entry')
export class EntryEntity extends BaseEntity implements IDeserializable<EntryEntity> {
@ManyToMany(type => ImageEntity, image => image.entries, { onDelete: 'CASCADE', cascade: true })
@JoinTable()
images: ImageEntity[];
}
和Image 实体类:
@Entity('image')
export class ImageEntity extends BaseEntity implements IDeserializable<ImageEntity> {
@ManyToMany(type => EntryEntity, entry => entry.images)
entries: EntryEntity[];
}
我用来删除条目的方法:
public async delete(entryId: number): Promise<void> {
const queryRunner = this.connection.createQueryRunner();
await queryRunner.connect();
await queryRunner.startTransaction();
try {
await queryRunner.manager.getRepository(EntryEntity)
.createQueryBuilder('entry')
.delete()
.from(EntryEntity)
.where('entry.id = :entryId', { entryId })
.execute();
await queryRunner.commitTransaction();
} catch (err) {
await queryRunner.rollbackTransaction();
} finally {
await queryRunner.release();
}
}
预期行为:
如果我删除了某个条目,那么它的所有图像也应该被删除。
实际行为:
条目从其表中删除,它也从entry_images_image 表中删除
但与此条目关联的图像仍然存在(它们仍然存在于image 表中)。
我对TypeOrm不是很熟悉,为什么会这样?非常感谢您的帮助。
【问题讨论】: