У меня есть 2 таблицы: Технические характеристики и Детали с отношением многие ко многим. Поэтому я создаю таблицу Spec_Parts для этой связи. В своем проекте я использую Thymeleaf и Spring Data JPA. У меня есть кнопка «Все спецификации», которая дает мне страницу со списком всех спецификаций. Все спецификации состоят из «частей». Так что рядом с каждой спецификацией у меня есть кнопка «Просмотр частей», открывающая страницу со списком «частей» текущей «Спецификации».
<div align="center">
<table border="1">
<tr>
<th>id</th>
<th>name</th>
<th>Exporter</th>
<th>Type</th>
<th>Description</th>
</tr>
<tr th:each="part : ${parts}">
<td th:utext="${part.getId()}">...</td>
<td th:utext="${part.getName()}">...</td>
<td th:utext="${part.getExportJpa().getName()}">...</td>
<td th:utext="${part.getTypesJpa().getName()}">...</td>
<td th:utext="${part.getDescription()}">...</td>
<td>
<form th:action="@{/deletePartInSpec}" method="post">
<input type="hidden" name="id" th:value="${part.id}" />
<input type="submit" value="Delete" class="btn btn-danger" />
</form>
</td>
</tr>
</table>
</div>
URL:
http://localhost:8080/allParts?id=1
Где id = 1 означает первую «Спецификацию». Сейчас я пытаюсь создать кнопку «Удалить», но не знаю, как мне запомнить идентификатор текущей «Спецификации» и отправить его контроллеру. Итак, как я могу удалить некоторые «Детали» из «Спецификаций»?
Детали:
@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;
Спецификации:
@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;