У меня возникают проблемы с этим запросом, но ТОЛЬКО под HSQLDB. Мы используем Oracle для производственной базы данных и HSQL для автоматических интеграционных тестов. Вот мой главный объект:JPA/Hibernate/HSQLDB запрашивает, но не назначает подобъект
@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 - Я могу вручную выполнить запрос и посмотреть данные. Тем не менее, объекты Student всегда имеют «расы» как null. Как я уже сказал, этот запрос отлично работает в Oracle. Есть какие-то вещи настройки HSQLDB, которые я пропускаю?
Редактировать: Нравится? В Студента:
@OneToMany(fetch=FetchType.LAZY, mappedBy="id")
private Set<StudentRace> races;
В StudentRace:
@ManyToOne
@JoinColumn(name="STUDENTID")
private Student student;
Еще не повезло. Элемент «расы» по-прежнему равен нулю.