Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 Initialization - Fatal编程技术网

Java 如何在Hibernate中使用即时实例化?

Java 如何在Hibernate中使用即时实例化?,java,hibernate,lazy-initialization,Java,Hibernate,Lazy Initialization,这是我的映射类。 我称之为实例化的代码是: <!-- Clasa Proiect--> <class catalog="tema3" name="com.tema3.tables.Proiect" table="proiect" lazy="false"> <id column="proiect_id" name="id"> <generator class="native"/> </id> &l

这是我的映射类。
我称之为实例化的代码是:

<!-- Clasa Proiect-->
<class catalog="tema3" name="com.tema3.tables.Proiect" table="proiect" lazy="false">
    <id column="proiect_id" name="id">
        <generator class="native"/>
    </id>
    <property name="nume"  type="text" />

    <set name="itemList" table="proiect_item" fetch="select">
        <key column="proiect_id"/>
        <many-to-many column="item_id" unique="true" class="com.tema3.tables.Item"/>
    </set>
</class>    </class>
会话会话=HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Query q=session.createQuery(“来自Proiect”); List lists=HibernateUtil.listAndCast(q); session.getTransaction().commit(); obj=列表; 这是listandCastMethod:

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
 Query q = session.createQuery("from Proiect");
 List<Proiect> lists = HibernateUtil.listAndCast(q);
 session.getTransaction().commit();
 obj = lists;
公共静态列表listAndCast(查询q){
@抑制警告(“未选中”)
List=q.List();
退货清单;
}
我不断地得到一个:

public static <T> List<T> listAndCast(Query q) {
    @SuppressWarnings("unchecked")
    List list = q.list();
    return list;
}
2011年5月2日下午4:38:03 org.hibernate.LazyInitializationException
严重:未能延迟初始化角色集合:com.tema3.tables.Proiect.itemList,未关闭任何会话或会话
org.hibernate.LazyInitializationException:未能延迟初始化角色集合:com.tema3.tables.Proiect.itemList,未关闭任何会话或会话
位于org.hibernate.collection.AbstractPersistentCollection.ThrowlazyiInitializationException(AbstractPersistentCollection.java:358)

但问题是Proiect类的字段被填充,除了我得到这个异常的Items集合,但是我想填充Items集合。我该怎么做呢

在返回或调用
transaction.commit()之前,初始化
listAndCast(Query q)
方法中的项集。这可以通过调用项集中某个元素的任何访问器来实现。这将强制hibernate初始化项目集,而不是返回代理列表

编辑

May 2, 2011 4:38:03 PM org.hibernate.LazyInitializationException <init>
SEVERE: failed to lazily initialize a collection of role: com.tema3.tables.Proiect.itemList, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.tema3.tables.Proiect.itemList, no session or session was closed
 at   org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
会话会话=HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Query q=session.createQuery(“来自Proiect”); List lists=HibernateUtil.listAndCast(q); if(lists!=null&&lists.size()>0){ 设置s=lists.get(0.getItemList(); 迭代器iter=s.Iterator(); while(iter.hasNext()){ Item=iter.next(); item.getSomething(); 打破 } } session.getTransaction().commit(); obj=列表;
我找到了答案。它需要将属性添加到XML中的集合声明中
lazy=“false”

i
i很抱歉,你能说得更具体一点,也许写一点代码,因为我不知道你在说什么。嘿,thx,但是我发现了问题……我不得不在xml中的set声明中添加“lazy=“false”,结果成功了。用于更新面团的thk
 Session session = HibernateUtil.getSessionFactory().getCurrentSession();
 session.beginTransaction();
 Query q = session.createQuery("from Proiect");
 List<Project> lists = HibernateUtil.listAndCast(q);
 if(lists != null && lists.size() > 0) {
    Set<Item> s = lists.get(0).getItemList();
    Iterator iter = s.iterator();
    while(iter.hasNext()) {
       Item item = iter.next();
       item.getSomething();
       break;
    }
 }
 session.getTransaction().commit();
 obj = lists;