0

hiberbnate についてお聞きしたいのですが、2 つのページがあります。1 つ目はメーカー「Fabricant」のデータテーブルで、2 つ目は別のページのデータテーブル コンポーネント「composant」です。テーブルに新しいコンポーネントを追加しようとすると、彼を選択する必要があります。メーカー「Fabricant」を使用していますが、このエラーが表示されています:(

ロールのコレクションの遅延初期化に失敗しました: com.persistance.Fabricant.composants、セッションまたはセッションが閉じられませんでした

これは私のコードです

<h:outputLabel value="Fabricant:"   />  
            <p:selectOneMenu id="fab" value="#{composantbean.fabricant}" required="true">  
                <f:selectItem itemLabel="Select Fabricant" itemValue="" />  
                <f:selectItems value="#{fabricantbean.list}" />  
            </p:selectOneMenu>  

composanbean と fabricantbean はスコープセッションです

4

1 に答える 1

0

これで問題ありません。「ManufacturerDAO」を変更し、session.getTransaction.commit() を削除しますが、この戦略が正しいかどうかはわかりません

public List<Fabricant> findAll () { 

        Session session = sessionFactory.getCurrentSession(); 
        session.beginTransaction();
        Criteria crit = session.createCriteria(Fabricant.class);
        list=crit.list();
    /*  session.getTransaction().commit(); */
        return  list;
    }
于 2013-04-17T11:02:02.563 に答える