Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate复合键,带;“多对一”键;加载性能的关系_Java_Hibernate_Lazy Loading_Hibernate Mapping_Many To One - Fatal编程技术网

Java Hibernate复合键,带;“多对一”键;加载性能的关系

Java Hibernate复合键,带;“多对一”键;加载性能的关系,java,hibernate,lazy-loading,hibernate-mapping,many-to-one,Java,Hibernate,Lazy Loading,Hibernate Mapping,Many To One,我有两个班,学生班和课程班,这两个班成为了三年级的一个组合键 <class name="Grade" table="grade" lazy="true"> <composite-id> <key-many-to-one class="Student" name="student" column="student_id" lazy="false" /> <key-many-to-one class="Course"

我有两个班,学生班和课程班,这两个班成为了三年级的一个组合键

<class name="Grade" table="grade" lazy="true">
    <composite-id>
        <key-many-to-one class="Student" name="student" column="student_id" lazy="false" />
        <key-many-to-one class="Course" name="course" column="course_id" lazy="false" />
    </composite-id>
    <property name="score" column="score" type="integer" />
</class>

如果我运行一个分离的条件查询,比如说获取一门课程的所有学生成绩

DetachedCriteria dc = DetachedCriteria.forClass( Grade.class );
dc.add( Property.forName( "course" ).eq( course ) );
dc.setFetchMode( "student", FetchMode.JOIN );
List< Grade > grades = getHibernateTemplate().findByCriteria( dc );
DetachedCriteria dc=DetachedCriteria.forClass(Grade.class);
dc.add(Property.forName(“课程”).eq(课程));
dc.setFetchMode(“学生”,FetchMode.JOIN);
Listgrades=getHibernateTemplate().findByCriteria(dc);
我注意到,在.list()过程中,Student对象是分别为每一行延迟加载的,即使主查询也在加载Student对象。这似乎是一种甚至不考虑批量大小设置的关键处理(我将动态批处理设置为50个批处理项目)。我找到了一份难看的工作

<class name="Grade" table="grade" lazy="true">
    <composite-id>
        <key-property name="studentId" column="student_id" />
        <key-property name="courseId" column="course_id" />
    </composite-id>
    <many-to-one class="Student" name="student" column="student_id" lazy="false" insert="false" update="false" />
    <many-to-one class="Course" name="course" column="course_id" lazy="false" insert="false" update="false" />
    <property name="score" column="score" type="integer" />
</class>

以及修改年级类以包含这些ID。有更好的办法吗?我确实希望学生和课程对象可用(延迟加载)。使用hibernate 5.2.6