【发布时间】:2012-03-02 16:29:27
【问题描述】:
我在使用这个查询时遇到了问题,但仅限于 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;
在学生竞赛中:
@ManyToOne
@JoinColumn(name="STUDENTID")
private Student student;
仍然没有运气。 “races”元素仍然为空。
【问题讨论】: