JPA/Hibernate/HSQLDB查询但不分配子对象

JPA/Hibernate/HSQLDB查询但不分配子对象,hibernate,jpa,hsqldb,Hibernate,Jpa,Hsqldb,我对此查询有问题,但仅在HSQLDB下。我们使用Oracle进行生产数据库,使用HSQL进行自动化集成测试。这是我的主要目标: @Entity @Table(name="STUDENTS") @org.hibernate.annotations.Proxy(lazy=false) public class Student implements Serializable { ... @OneToMany(fetch=FetchType.LAZY) @JoinColumn(name="S

我对此查询有问题,但仅在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;
...
}
我的JPA查询如下:

@Entity
@Table(name="STUDENTRACE")
@org.hibernate.annotations.Proxy(lazy=false)
public class StudentRace implements Serializable {
...
    @Column(name="STUDENTID")
    private Integer studentid;
...
}
entityManager.createQuery("select distinct s from Student s left join fetch s.races "+
  "where s.schoolNumber = :schoolNumber");
我知道我在HSQLDB数据库中有正确的数据-我可以手动执行查询并查看数据。然而,Student对象总是将“races”设置为null。正如我所说,这个查询在Oracle中运行良好。有没有什么HSQLDB设置我遗漏的东西

编辑:像这样?学生:

@OneToMany(fetch=FetchType.LAZY, mappedBy="id")
private Set<StudentRace> races;

还是不走运。“races”元素仍然为空。

您的映射不正确,因为
STUDENTRACE.STUDENTID
列映射了两次:一次作为
Student
中的JoinColumn,一次作为
STUDENTRACE
中的列

将关联设置为单向并删除
StudentRace
中的studentid字段,或者将其设置为双向,并在
StudentRace
中设置一个映射为多个One的
Student-Student
字段,如中所示

@ManyToOne
@JoinColumn(name="STUDENTID")
private Student student;