有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

那是我的地图课
我称之为实例化的代码是:

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
 Query q = session.createQuery("from Proiect");
 List<Proiect> lists = HibernateUtil.listAndCast(q);
 session.getTransaction().commit();
 obj = lists;

这是listandCastMethod:

public static <T> List<T> listAndCast(Query q) {
    @SuppressWarnings("unchecked")
    List list = q.list();
    return list;
}

我一直在想:

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)

但问题是Proiect类的字段被填充,除了我得到这个异常的项目集,但我希望这些项目集被填充。我该怎么做


共 (1) 个答案

  1. # 1 楼答案

    我找到了答案。它需要将属性添加到XML中的集合声明中 lazy="false"