求助hibernate :failed to lazily initialize a collect

sunboyqq23 sunboyqq23 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是Bill.hbm.xml:
  <class name="entity.Bill" table="Bill">
<id name="id" column="oid">
<generator class="increment" />
</id>
<property name="tableNum" column="table_num" />
<property name="consumption" column="consumption" />
<property name="isFinished" column="is_finished" />
<property name="createDate" column="create_date" />

<set name="itemSet" cascade="all" lazy="false">
<key column="Bill_id" />
<one-to-many class="entity.Item" />
</set>
</class>

测试代码:
Dish dish1 = DishDAO.findDishByName("apple");
Bill bill = BillDAO.findBill("B");
Item item = ItemDAO.createItem(new Item(1,dish1));
bill.getItemSet().add(item);

BillDAO.findBill()
public static Bill findBill(String tableNum) throws Exception {

Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
Bill bill;

Query query = session.createQuery("from Bill bill where bill.tableNum=:tableNum and bill.isFinished=false");
query.setParameter("tableNum", tableNum);
List list = query.list();
Iterator iter = list.iterator();

if(iter.hasNext()) {
bill = (Bill) iter.next();
}else {
tx.commit();
session.close();
throw new Exception("bill not found");
}

tx.commit();
session.close();

return bill;

}

我在网上查到是hibernate懒加载的问题,其中一种解决方法是把lazy设置成false,我这么做了,但是为什么还会发生相同的错误呢,我是在netbeans下运行
...全文
评论 2
收藏 已收藏
分享
返回顶部
sunboyqq23
Web 开发 81,108 成员 341,721 内容