@Entity()
export class Job {
@PrimaryKey({ type: BigIntType })
id: string;
@OneToMany(() => JobExperienceLevel,
jobExperienceLevel => jobExperienceLevel.job, {cascade: Cascade.ALL], orphanRemoval: true})
experienceLevels = new Collection<JobExperienceLevel>(this);
}
@Entity()
export class JobExperienceLevel {
@PrimaryKey()
@Enum({
items: () => JobExperienceLevelType
})
experienceLevel: JobExperienceLevelType;
@ManyToOne({nullable:false, primary: true, joinColumn: 'job_id'})
job: Job;
}
export enum JobExperienceLevelType {
ENTRY_LEVEL = 'ENTRY_LEVEL',
JUNIOR = 'JUNIOR',
REGULAR = 'REGULAR',
SENIOR = 'SENIOR'
}
После вызова experienceLevels.removeAll () для некоторой сущности задания генерируется следующий запрос:
delete from `job_experience_level` where `experience_level` = 'SENIOR' and `job_id` is null
Таблица базы данных 'job_experience_level' содержит только составные первичные ключи (experience_level, job_id)
Я проверил, что перед вызовом метода removeAll в коллекции есть одна сущность 'SENIOR'.
Я использую репозиторий entity с репозиторием persistAndFlu sh для сущности задания.
Проблема в том, что этот запрос неправильный, и он должен заполнить правильный job_id.
Я также пытался удалить @PrimaryKey () из свойства experienceLevel, но тогда в транзакции вообще не было запроса на удаление.