2014-08-27 3 views
0

데이터베이스를 만드는 데 문제가 있습니다.() (dao.findById (Course.class, 과정) .getCourseModules) 목록 모듈 = 새로운 ArrayList를 :Sakai Hibernate lazy initialize

<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> 

와 나는 같은 내 논리 콩의 데이터에 액세스하려고 할 때 :이 두 HBM 매핑을 ;

이 나에게 org.hibernate.LazyInitializationException을 제공가 : 게으르게 에게 역할의 컬렉션을 초기화하지 못했습니다 br.unicamp.iel.model.Course.courseModules을 더 세션이나 세션은

우리가 필요로

답변

-1

폐쇄되지 않았다 열려 수행

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

의 전체 코드를 확인하고 dao.findById 방법 내부 세션 (또는 EntityManager)를 닫습니다? 게으른 관계를 해결하기 위해 세션을 열어 두어야합니다.

+0

의견에 질문을 명확히하고 해결책을 찾았을 때 대답해야합니다. –

+0

글쎄, 코드에 대해 물었고 게으른로드가 작동하는 방식에 대해 힌트를주었습니다 ... –

관련 문제