i’ve got an “appointment” entity object(table) AND dates_doctor_available entity build like this
@Entity public class Appointment { ..... @OneToOne @JoinColumn(name = "date_time_available_fk", nullable=true) private DatesDoctorAvailable datesDoctorAvailable; ......
AND
@Entity public class DatesDoctorAvailable { .... @OneToOne(cascade = CascadeType.ALL, mappedBy="datesDoctorAvailable") private Appointment appointment; ....
now i wish from a controller to remove the Database entry based on the “date_time_available_fk” Using “Appointment” object. For example something like
@RequestMapping(value="/show/scheduled/{id}" ,method = RequestMethod.GET) public String gettAppointmentDel(Model model, @PathVariable String id, Principal principal, @ModelAttribute("appointment") Appointment appointment, @ModelAttribute("datess.dateID") DatesDoctorAvailable datesDoctoravailable) { ...... //this part below i want to make it work appointmentService.deleteByDatesDoctorAvailable( appointment.getDatesDoctorAvailable( datesDoctorAvailableService.findByDateID(Long.parseLong(id)))); ..... }
where inside service there is a data object access something like this(they are interfaces)
@Override public Appointment deleteByDatesDoctorAvailable(DatesDoctorAvailable datesDoctorAvailable) { return appointmentDao.deleteByDatesDoctorAvailable(datesDoctorAvailable); }
where id is the date_time_available_fk number i want to pass(i already have it from thymeleaf) to the Appointment object
i want to avoid using @Query if this can happen.
UPDATE i actually figured it out i will give the solution in the morning for future troublers.
Advertisement
Answer
The Solution i could not fetch the object information from database with above as i said in order to delete it afterwards so i did this(created new object Appointment)
Appointment appointmentFind = appointmentService.findByDatesDoctorAvailable( datesDoctorAvailableService.findByDateID(Long.parseLong(id)));
that way i could retrieve the information then delete it like this.
appointmentService.deleteScheduleById(appointmentFind.getId());
after getting id from url request mapping
@RequestMapping(value="/show/scheduled/{id}" ,method = RequestMethod.GET) public String getAppointmentDel(Model model, @PathVariable String id, Principal principal, @ModelAttribute("appointment") Appointment appointment, @ModelAttribute("datess.dateID") DatesDoctorAvailable datesDoctoravailable) {
—————inside view thymeleaf————
<td><button type="button" th:onclick= "|window.location.href='/appointment/show/scheduled/${datess.dateID}'|" th-text="(id1=${datess.dateID})" class="btn btn-danger btn-xs"> Cancel it </button></td>
——————-inside Services—————
—Service:—
@Override public Appointment findByDatesDoctorAvailable(DatesDoctorAvailable datesDoctorAvailable) { return appointmentDao.findByDatesDoctorAvailable(datesDoctorAvailable); }
—DAO:—–
Appointment findByDatesDoctorAvailable(DatesDoctorAvailable datesDoctorAvailable);
—Service:—
void deleteScheduleById(@Param("id") Long id); @Override public void deleteScheduleById(Long id) { appointmentDao.deleteScheduleById(id); }
—DAO:—–
@Modifying @Transactional @Query("delete from Appointment where id = :id") void deleteScheduleById(@Param("id") Long id);