У меня проблемы с этим запросом, но ТОЛЬКО под HSQLDB. Мы используем Oracle для рабочей базы данных и HSQL для автоматизированных интеграционных тестов. Вот мой главный объект:
@Entity
@Table(name="STUDENTS")
@org.hibernate.annotations.Proxy(lazy=false)
public class Student implements Serializable {
...
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name="STUDENTID",referencedColumnName="ID")
private Set<StudentRace> races;
...
}
StudentRace выглядит так:
@Entity
@Table(name="STUDENTRACE")
@org.hibernate.annotations.Proxy(lazy=false)
public class StudentRace implements Serializable {
...
@Column(name="STUDENTID")
private Integer studentid;
...
}
И мой запрос JPA выглядит так:
entityManager.createQuery("select distinct s from Student s left join fetch s.races "+
"where s.schoolNumber = :schoolNumber");
Я знаю, что у меня есть правильные данные в базе данных HSQLDB - я могу вручную сделать запрос и просмотреть данные. Все же объекты Студента всегда имеют "гонки" как ноль. Как я уже сказал, этот запрос прекрасно работает в Oracle. Мне не хватает какой-то настройки HSQLDB?
Редактировать: Как это? В ученике:
@OneToMany(fetch=FetchType.LAZY, mappedBy="id")
private Set<StudentRace> races;
В StudentRace:
@ManyToOne
@JoinColumn(name="STUDENTID")
private Student student;
Все еще не повезло. Элемент "гонки" по-прежнему нулевой.