Я создаю приложение управления больницей (с использованием весенней загрузки, hibernate и mySql), при попытке добавить встречу для пациента, hibernate создает только одну запись, а затем продолжает обновлять ее, вместо добавления новой,Вот моя сущность Посещения:
@Entity
@Table(name = "visits", uniqueConstraints = {@UniqueConstraint(columnNames = {"date", "doctor_id"})})
public class DoctorVisit {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Enumerated(EnumType.STRING)
private Cause cause;
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
private LocalDateTime date = LocalDateTime.now();
@Enumerated(EnumType.STRING)
private Status status;
private String diagnosis;
private String prescription;
private String referalls;
@ManyToOne
private Patient patient;
@ManyToOne
private Doctor doctor;
Вот контроллеры, сначала получает параметры запроса для пациента и специальности доктора и создает новый экземпляр DoctorVisit:
@GetMapping("/add")
public String add(@RequestParam String spec,@RequestParam Long id, Model model){
List<Doctor> doctors = doctorRepository.getAllBySpeciality(spec);
Patient patient = patientRepositoryt.findOne(id);
model.addAttribute("visit", new DoctorVisit());
model.addAttribute("doctors", doctors);
model.addAttribute("spec", spec);
model.addAttribute("patient", patient);
return "visitForm";
}
Он передаетатрибуты для этой jsp связанной формы:
<form:form modelAttribute="visit" method="POST" >
<form:input path="patient.id" value="${patient.id}" readonly="true"/>
${spec}:<form:select path="doctor" multiple="false">
<c:forEach var="doctor" items="${doctors}">
<form:option value="${doctor}" label="${doctor.surname}"/>
</c:forEach>
</form:select>
Date and time:<form:input id="timePicker" path="date"/>
Cause: <form:select path="cause" multiple="false">
<c:forEach var="cause" items="${causes}">
<form:option value="${cause}" label="${cause.description}"/>
</c:forEach>
</form:select>
<input type="submit" value="Submit"/>
</form:form>
И затем он отправляет продукт на этот контроллер:
@PostMapping("/add")
@ResponseBody
public String save(@Valid DoctorVisit visit){
visitRepository.save(visit);
return "success";
}
Почему он не создает новую запись базы данных?Кажется, он застрял на первой записи и не может создать новую, только обновить последнюю.