ClassMetaData.getPropertyValue()抛出LazyInitializationException:无法初始化代理 - 没有Session

时间:2014-05-23 06:43:43

标签: java hibernate metadata hibernate-session

我试图通过调用

从类元数据中获取属性值

getPropertyValue(Object object , String propertyName , EntityMode entityMode)

但它正在抛出

org.hibernate.LazyInitializationException: could not initialize proxy - no Session例外,这是我的代码:

ClassMetaData metaData = sessionFactory.getClassMetaData(myObject.getClass());
for(String propertyName : metaData.getPropertyNames()){
    Object propertyValue = metaData.getPropertyValue(myObject, propertyName, EntityMode.POJO);
    System.out.println(propertyValue);
}

它正在打印第一个对象值,从第二次运行开始,它抛出异常。

1 个答案:

答案 0 :(得分:0)

延迟加载的行为是,当您关闭会话或刷新更改时..您只获得已在会话中的数据。如果你没有调用任何对象被定义为延迟加载的对象,并且在你尝试调用它之后刷新,它会产生同样的错误。对此的解决方案是通过在关闭会话或刷新数据之前调用它来将延迟加载更改为急切或加载对象