【问题标题】:Retirve Entity Information got exception using session.laod when after session is closed会话关闭后使用 session.load 检索实体信息出现异常
【发布时间】:2012-05-04 14:31:21
【问题描述】:

我在关闭会话后使用 load 方法加载学生对象我试图在休眠 3.0 中打印学生名称。但我得到 LazyInitializationException: could not initialize proxy - 拥有的会话已关闭.i提到代码片段

        Session session=HibernateUtil.currentSession();
    Transaction tx=session.beginTransaction();
    Object o1=session.load(Student.class,new Integer(2));
    tx.commit();
    session.close();
           log.info("Student name"+((Student)o1).getSname());

然后我添加了另一个属性lazy="true"。但是抛出了同样的错误。如何解决这个问题。

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    这就是Session.load() 方法的原理:它向实体返回一个未初始化的代理(除非实体已经在会话中加载)。如果你想要一个 Student 的初始化实例,请使用 Session.get()

    【讨论】:

    • 当您只需要对现有实体的引用时很有用,例如将其附加到另一个实体:Product p = session.load(Product.class, productId); cart.add(p);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    相关资源
    最近更新 更多