ОШИБКА: несоответствие типов - как сохранить в спящем режиме двунаправленное отображение OneToOne с использованием форм spring-mvc - PullRequest
0 голосов
/ 29 ноября 2018

Мой способ кодирования заканчивается несоответствием типов, так как я использую JSP для присвоения значения.( Редактировать : Несоответствие типов при applicant_id)

Вариант использования прост: При отображении на экране «Пригласить заявителя» пользователь должен иметь возможность выбрать время и дату иотправить форму, в которой заявителю будет назначено установленное время, дата и наоборот.

Главный контролер

@RequestMapping("/manageApplicant/invite")
public String inviteScreen(@RequestParam(value="id") int id, Model theModel) {
    theModel.addAttribute("interview", new Interview());
    Applicant applicants = mainService.getSpecificApplicant(id);
    theModel.addAttribute("applicants", applicants);
    return "invite-applicant";
}

ИнтервьюОбъявление переменной класса

@OneToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name="applicant_id", nullable=false)
private Applicant applicant_id;

Объявление переменной класса заявителя

@OneToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name="interview_id")
private Interview interview_id;

.JSP

<form:form action="/management/recruitment/setInterview" modelAttribute="interview">
<form:hidden path="applicant_id" value="${applicants}"/>
Date<form:input type="DATE" path="interviewDate"/><br>
Time<form:input type="TIME" path="interviewTime"/>
<br>
<input type="submit" value="Invite for interview" id="submitButton" />
</form:form>

MySQL TABLES

CREATE TABLE interviews(
id INT auto_increment NOT NULL, PRIMARY KEY(id),
applicant_id int(11),
interviewDate date,
interviewTime time,
CONSTRAINT `FK_Applicant` FOREIGN KEY (`applicant_id`)
REFERENCES `applicant` (`id`)
);

ALTER TABLE applicant ADD 
CONSTRAINT `interviews_ibfk_1` FOREIGN KEY (`interview_id`)
REFERENCES `interviews` (`id`);

Интервью Реализация DAO

public void saveInterview(Interview theInterview) {
    // get current session
    Session currentSession = sessionFactory.getCurrentSession();
    // save interview
    currentSession.save(theInterview);
}

1 Ответ

0 голосов
/ 02 декабря 2018

Вам не нужны @JoinColumn и ForeignKey с обеих сторон.Интервью содержит Applicant_id, и этого должно быть достаточно.Если вы хотите, чтобы связь была двунаправленной, вы должны сообщить JPA, с помощью чего это поле отображается на другой стороне.

@OneToOne(mappedby="applicant_id")
private Interview interview_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...