0

データベースの構築に問題があります。この 2 つの hbm マッピングがあります。

<class name="br.unicamp.iel.model.Module" table="readinweb_modules">
    <id name="id" type="java.lang.Long">
            <generator class="increment" />
    </id>
    <many-to-one name="course" class="br.unicamp.iel.model.Course"
            column="course_id" fetch="select" />

    <property name="position" type="integer" />
    <property name="module_grammar" type="text" />
</class>

<class name="br.unicamp.iel.model.Course" table="readinweb_courses">
    <id name="id" type="java.lang.Long">
            <generator class="increment" />
    </id>
    <property name="title" length="255" not-null="true" type="string" />

    <property name="idiom" length="255" not-null="true" type="string" />
    <property name="description" type="text" />
    <set name="courseModules" table="readinweb_modules"
            inverse="true" lazy="true" fetch="select">
           <key column="id" not-null="true" />
            <one-to-many class="br.unicamp.iel.model.Module" />
    </set>
</class>

ロジック Bean のデータに次のようにアクセスしようとすると、次のようになります。

それは私に org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.unicamp.iel.model.Course.courseModules, no session または session was closed を与えます

4

1 に答える 1

-1

の完全なコードを確認する必要があります。

List modules = new ArrayList(dao.findById(Course.class, course).getCourseModules())

EntityManagerメソッド内でセッション (または ) を開いたり閉じたりしdao.findByIdますか? 怠惰な関係を解決するには、セッションがまだ開いている必要があります

于 2014-09-03T01:52:42.583 に答える