В своем проекте я использую данные Spring jpa. У меня есть таблицы для отношений "многие ко многим". Мои объекты:
@Entity
@Table(name = "SPEC")
public class SpecJpa {
@Id
private int id;
@Column(name = "NAME")
private String name;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "Creator_ID", unique = false, nullable = false, updatable = true)
private UsersJpa usersJpa;
@Column(name = "DESCRIPTION")
private String description;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name="SPEC_PARTS",
joinColumns = @JoinColumn(name="ID_PARTS", referencedColumnName="id"),
inverseJoinColumns = @JoinColumn(name="ID_SPEC", referencedColumnName="id")
)
private Set<PartsJpa> partsJpa;
//---------------
И части:
@Entity
@Table(name = "PARTS")
public class PartsJpa {
@Id
private int id;
@Column(name = "NAME")
private String name;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "ID_EXPORT", unique = false, nullable = false, updatable = true)
private ExportJpa exportJpa;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "ID_TYPE", unique = false, nullable = false, updatable = true)
private TypesJpa typesJpa;
@Column(name = "DESCRIPTION")
private String description;
@ManyToMany(fetch = FetchType.EAGER)
private Set<SpecJpa> specJpa;
Теперь в контроллере я пытаюсь удалить одну строку из частей таблицы:
@PostMapping("deletePart")
public String deletePart(@RequestParam String id, Model model) {
partsService.deleteById(Integer.parseInt(id));
return "redirect:/parts";
}
Но у меня есть исключение :
нарушение ограничения целостности: "FK9Y4MKICYBLJWPENACP4298I49: PUBLI C .PARTS FOREIGN KEY (ID_EXPORT) REFERENCES PUBLI C .EXPORT (ID) (1)"; SQL оператор: / * удалить com.aleksandr0412.demo.entitiesjpa.ExportJpa / удалить из ЭКСПОРТА, где id =? [23503-200]], SQL: / удалить com.aleksandr0412.demo.entitiesjpa.ExportJpa * / удалить из ЭКСПОРТА, где id =? 2020-05-25 19: 16: 31.630 ПРЕДУПРЕЖДЕНИЕ 13387 --- [nio-8080-exe c -4] ohengine.jdb c .spi.SqlExceptionHelper: SQL Ошибка: 23503, SQLState: 23503
В моей базе данных для этих сущностей у меня есть 3 таблицы: Parts, Spe c и Spec_parts. Насколько я понимаю, для решения этой проблемы я сначала должен удалить строки в таблице spec_parts, а после этого я могу удалить строку из частей таблицы. Как я могу это сделать?