Я хочу знать, как сохранить сущность в базе данных, не сохраняя при этом и ее относительную.
например, у вас есть рабочие места для работников вашей компании, и вы хотите сохранить новые вакансии в вашей базе данных.
вы создаете 2 объекта Job и Worker с отношением OneToMany (1 задание для 3 или более работников)
при сохранении задания в базе данных оно имеет поле: works и не должно быть нулевым.
Проблема : когда вы сохраняете работу в базу данных, ее рабочие тоже сохраняются! (jobRepository.save (myJob)
, поэтому каждый раз, когда я добавляю новых рабочих мест, которые уже есть в моей базе данных, они добавляются снова (и это, конечно, нарушает работу приложения, потому что у вас не может быть дублирующих работников)
Как я могу решить эту проблему? Спасибо!
пример: Job
@Entity
@Table(name = "job")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Job{
@Id
@Column(name = "id")
private Long id;
@OneToMany(mappedBy = "job", fetch = FetchType.EAGER)
private Set<Worker> workers;
}
пример: Worker
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "workers")
public class User extends DataAudit {
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "job_id", referencedColumnName = "id")
private Job job;
}
пример: сохранение работы в базе данных
Worker worker1 = workerService.getWorkerById(1);
Job job = new Job(1,worker1)
jobRepository.save(job)
выдает ошибку ----> JdbcSQLIntegrityConstraintViolationException: уникальный индекс или нарушение первичного ключа