У меня есть четыре записи в таблице мостов в базе данных MySQL. Используя @ManyToMany в спящем режиме, я получаю точный порядок сотрудников, но неправильный неправильный проект. Ниже приводится необходимый материал, чтобы выяснить, где я делаю ошибку.Неправильный порядок записей в отношениях M-M в спящем режиме
Это источник.
@Entity
@Table(name="PROJECT")
public class ProjectBean {
@Id @GeneratedValue @Column(name="PROJECT_ID")
private int projectId;
@Column(name="TITLE")
private String projectTitle;
@ManyToMany(mappedBy="projects")
private Collection<EmployeeBean> employees;
public ProjectBean() {
employees = new ArrayList<EmployeeBean>();
}
//getters & setters
}
@Entity
@Table(name="EMPLOYEE")
public class EmployeeBean {
@Id @GeneratedValue @Column(name="EMPLOYEE_ID")
private int employee_id;
@Column(name="FIRST_NAME")
private String firstName;
@Column(name="LAST_NAME")
private String lastName;
@ManyToMany
@JoinTable(name="EMPLOYEE_PROJECT",[email protected](name="EMPLOYEE_ID"),[email protected](name="PROJECT_ID"))
private Collection<ProjectBean> projects;
public EmployeeBean() {
projects = new ArrayList<ProjectBean>();
}
//getters and setters goes here
}
и, наконец, следующий основной класс, где я пытаюсь пройти список с тем же порядком, как мы можем видеть в самом верхнем изображении.
ArrayList<ProjectBean> projects = (ArrayList<ProjectBean>)session.createQuery("SELECT projects FROM EmployeeBean").list();
ArrayList<EmployeeBean> employees = (ArrayList<EmployeeBean>)session.createQuery("SELECT employees FROM ProjectBean").list();
System.out.println("EmpID\tPrjID");
int i = 0;
for (EmployeeBean employeeBean : employees) {
System.out.print(employeeBean + "\t");
ProjectBean projectBean = (ProjectBean) projects.get(i);
i++;
System.out.println(projectBean);
}
Привет JB. В вашем HQL имя псевдонима 'e' не определено. – Chaitanya
Спасибо @Chaitanya. Исправлено. –