Привет, У меня есть базы данных Staff с 3 таблицами:Сочинение HQL заявление
mysql> describe person;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| person_id | bigint(20) | NO | PRI | NULL | auto_increment |
| date | datetime | YES | | NULL | |
| first_name | varchar(255) | YES | | NULL | |
| last_name | varchar(255) | YES | | NULL | |
| position | varchar(255) | YES | | NULL | |
| salary | double | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
mysql> describe department;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| department_id | bigint(20) | NO | PRI | NULL | auto_increment |
| dept_name | varchar(255) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
mysql> describe department_person;
+---------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------+------+-----+---------+-------+
| department_id | bigint(20) | NO | PRI | NULL | |
| person_id | bigint(20) | NO | PRI | NULL | |
+---------------+------------+------+-----+---------+-------+
И я хочу, чтобы составить заявление HQL для получения данных из department.dept_name с использованием person.lastName. Я использовал следующий код для извлечения этих данных, но не повезло:
public List<Person> findByDepartment(){
Session session =
HiberUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<Person> result = session.createQuery("select d.dept_name from Person p " +
"join p.Department d where p.id = 'Andreas'").list();
for(Person a : result) {
Hibernate.initialize(a.getDepartmentList());
}
session.getTransaction().commit();
return result;
}
Помогите пожалуйста запросить правильное составление запроса HQL?
UPD
Person.java
**@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "department_person", joinColumns = {
@JoinColumn(name = "person_id", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "department_id",
nullable = false, updatable = false) })
private Set<Department> departmentList = new HashSet<Department>();**
Department.java
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "department_person", joinColumns = {
@JoinColumn(name = "department_id", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "person_id",
nullable = false, updatable = false) })
private Set<Person> personList;
ли ваши объекты отображаются с OneToMany, Oneto ... отношения? – DessDess
, сопоставленный с ManyToMany, я обновил сообщение с фрагментами кода. – devger
. Последний вопрос, который вы хотите, чтобы список лиц, использующих название отдела (как подсказывает ваше имя метода), или имя отдела для одного человека – DessDess