休眠不填充连接表
问题描述:
我有一个问题与休眠。我有经典@ManyToMany assosciation。当我向表中插入数据时,连接表为空。休眠不填充连接表
@ManyToMany
@JoinTable(name = "employee_interview", catalog = "db69824xmatko", schema = "",
joinColumns = @JoinColumn(name = "employee_id", nullable = false),
inverseJoinColumns = @JoinColumn(name = "interview_id", nullable = false))
public Set<InterviewEntity> getInterviews() {
return interviews;
}
@ManyToMany(mappedBy = "interviews")
public Set<EmployeeEntity> getEmployees() {
return this.employees;
}
,我运行的代码是在这里:
InterviewEntity interviewEntity = prepareInterview();
EmployeeEntity employeeEntity = prepareEmployeeEntity();
employeeDao.create(employeeEntity);
employeeEntity.getInterviews().add(interviewEntity);
interviewEntity.getEmployees().add(employeeEntity);
interviewDao.create(interviewEntity);
interviewDao.flush();
employeeDao.flush();
我试图找到任何解决方案,但没有成功。我试图flush()。 SQL我成了无红晕:
Hibernate:
insert
into
employee
(created_date, created_user, first_name, last_name, login, password)
values
(?, ?, ?, ?, ?, ?)
Hibernate:
insert
into
interview
(candidate_id, comment, created_date, created_user, interview_date, job, protocol, round)
values
(?, ?, ?, ?, ?, ?, ?, ?)
当我使用冲洗SQL如下运行:
Hibernate:
insert
into
employee_interview
(employee_id, interview_id)
values
(?, ?)
而且我不明白为什么我有这样的时候SQL脚本运行的空表employee_interview。我如何解决这个问题?我如何使用正确的数据填充连接表?感谢每一个提示。 :)
当我创建新员工时一切正常,但是当我使用旧对象时,我有例外,更新后面试的ID不存在。
--UPDATE-- In ... InterviewEntity interviewEntity = prepareInterview();
EmployeeEntity employeeEntity = employeeDao.findById(11);
employeeEntity.getInterviews().add(interviewEntity);//<<------------
CandidateEntity candidateEntity = prepareCandidateEntity();
interviewEntity.setCandidate(candidateEntity);
interviewEntity.getEmployees().add(employeeEntity);//<<------------
candidateDao.create(candidateEntity);
interviewDao.create(interviewEntity);
employeeDao.updateObject(employeeEntity);
这个代码抛出此异常
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.tuke.entity.InterviewEntity#104]
答
尝试设置在InterviewEntity的关系了。例如:
interviewEntity.getEmployees().add(employeeEntity)
+0
我在我的代码中有这一行:/但thx – bajky
'employeeDao.flush()'和'interviewDao.flush()'之间的实现有什么区别? –
您在保存记录后将面试添加到员工*。然后在保存之前将员工添加到采访中,因此他们的数据库状态可能不一致。 Hibernate可能会“帮助”你。 –
之间没有什么不同。只有Session.flush()。 – bajky