Hibernate找不到持久集
我正在使用Hibernate从数据库中读取数据。我不太熟悉,所以答案可能很简单: 我使用以下简单代码:Hibernate找不到持久集,hibernate,persistence,integer,relation,Hibernate,Persistence,Integer,Relation,我正在使用Hibernate从数据库中读取数据。我不太熟悉,所以答案可能很简单: 我使用以下简单代码: public static void main(String[] args) { CourseHelper ch = new CourseHelper(); Course c = ch.readCourse("fkaea"); for (Module m : c.getModules()) { for (Question q : m.getQuestio
public static void main(String[] args) {
CourseHelper ch = new CourseHelper();
Course c = ch.readCourse("fkaea");
for (Module m : c.getModules()) {
for (Question q : m.getQuestions()) {
for (Answer a : q.getAnswers()) {
}
}
}
}
读完这门课程后,我可以反复浏览它的模块,但无法访问持久的问题集。(大小='0'),尽管存在问题
hibernate配置文件如下所示:
首先是模块映射:
<hibernate-mapping>
<class name="hibernate.dao.Module" table="module" catalog="questionnair">
<composite-id name="id" class="hibernate.dao.ModuleId">
<key-property name="idmodule" type="int">
<column name="idmodule" />
</key-property>
<key-property name="idcourse" type="string">
<column name="idcourse" length="12" />
</key-property>
</composite-id>
<many-to-one name="course" class="hibernate.dao.Course" update="false" insert="false" fetch="select">
<column name="idcourse" length="12" not-null="true" />
</many-to-one>
<property name="omschrijving" type="string">
<column name="omschrijving" length="45" />
</property>
<set name="questions" inverse="true">
<key>
<column name="idcourse" />
<column name="idmodule" length="12" />
</key>
<one-to-many class="hibernate.dao.Question" />
</set>
</class>
</hibernate-mapping>
问题映射:
<hibernate-mapping>
<class name="hibernate.dao.Question" table="question" catalog="questionnair">
<id name="idvraag" type="java.lang.Integer">
<column name="idvraag" />
<generator class="identity" />
</id>
<many-to-one name="module" class="hibernate.dao.Module" fetch="select">
<column name="idcourse" />
<column name="idmodule" length="12" />
</many-to-one>
<property name="vraag" type="string">
<column name="vraag" length="245" />
</property>
<set name="answers" inverse="true">
<key>
<column name="idvraag" not-null="true" />
</key>
<one-to-many class="hibernate.dao.Answer" />
</set>
<set name="testquestionses" inverse="true">
<key>
<column name="idquestion" not-null="true" />
</key>
<one-to-many class="hibernate.dao.Testquestions" />
</set>
</class>
</hibernate-mapping>
我想答案很简单,但如果有人能帮我,我非常感激
Thanx默认情况下,当使用列表或集合时,hibernate不会加载集合。如果需要,请通过添加lazy=“false”关闭lazy标志。然后,无论何时加载模块,都将加载所有问题
<set name="questions" inverse="true" lazy="false">
<key>
<column name="idcourse" />
<column name="idmodule" length="12" />
</key>
<one-to-many class="hibernate.dao.Question" />
</set>
如果您不想更改映射,并且希望在此特定场景中加载集合,则可以使用Hibernate.initialize(module.getQuestions());在关闭会话之前
阅读有关hibernate中集合映射的更多信息。或者看一个例子