gpt4 book ai didi

java - 如何在 Hibernate 中使用急切实例化?

转载 作者:行者123 更新时间:2023-12-01 15:51:55 25 4
gpt4 key购买 nike

<!-- 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 类的字段已填充,但出现此异常的项目集除外,但我希望填充项目集。我该怎么做?

最佳答案

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

编辑

 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;

关于java - 如何在 Hibernate 中使用急切实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5857949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com