Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate.initialize在会话关闭后不起作用_Hibernate - Fatal编程技术网

Hibernate.initialize在会话关闭后不起作用

Hibernate.initialize在会话关闭后不起作用,hibernate,Hibernate,这可以是其他线程的副本。但我试图运行控制台应用程序来理解hibernate初始化方法。我写了下面的程序,但它不适合我 public class Main { public static void main(String[] args) { SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session2 = sessio

这可以是其他线程的副本。但我试图运行控制台应用程序来理解hibernate初始化方法。我写了下面的程序,但它不适合我

public class Main {
public static void main(String[] args) {
    SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    Session session2 = sessionFactory.openSession();
    Emp emp2 = (Emp)session2.load(Emp.class, 1);
    emp2.getEmail();
    session2.close();
    unproxy(emp2);
    System.out.println(emp2.getAddress());

}
@SuppressWarnings("unchecked")
public static <T> T unproxy(T entity) {
    if (entity == null) {
        return null;
    }
    System.out.println(entity.getClass());
    if (entity instanceof HibernateProxy) {
        Hibernate.initialize(entity);
        entity = (T) ((HibernateProxy) entity).getHibernateLazyInitializer().getImplementation();
    }
    return entity;
}
那么,这是否意味着在会话关闭后不能使用initialize方法加载惰性对象呢?如果没有,还有什么办法

那么这是否意味着我不能使用initialize加载惰性对象 会话关闭后的方法?如果没有,还有什么办法

这正是它的意思。延迟加载意味着仅在需要时加载对象,但这要求您仍然有一个到数据库的实时连接(在会话中,可能在事务中)

关闭
会话
后,无法初始化为延迟加载创建的代理

那么这是否意味着我不能使用initialize加载惰性对象 会话关闭后的方法?如果没有,还有什么办法

这正是它的意思。延迟加载意味着仅在需要时加载对象,但这要求您仍然有一个到数据库的实时连接(在会话中,可能在事务中)

关闭
会话
后,无法初始化为延迟加载创建的代理

那么这是否意味着我不能使用initialize加载惰性对象 会话关闭后的方法?如果没有,还有什么办法

这正是它的意思。延迟加载意味着仅在需要时加载对象,但这要求您仍然有一个到数据库的实时连接(在会话中,可能在事务中)

关闭
会话
后,无法初始化为延迟加载创建的代理

那么这是否意味着我不能使用initialize加载惰性对象 会话关闭后的方法?如果没有,还有什么办法

这正是它的意思。延迟加载意味着仅在需要时加载对象,但这要求您仍然有一个到数据库的实时连接(在会话中,可能在事务中)


关闭
会话后
,无法初始化为延迟加载创建的代理。

出于好奇,初始化方法有什么用?即使会话中没有initialize方法,我们也可以获得延迟可加载关联。@javafan取决于具体情况。可能您最初希望延迟加载,但在检查某些条件后重新考虑
Hibernate.initialize()
允许您这样做。出于好奇,initialize方法有什么用?即使会话中没有initialize方法,我们也可以获得延迟可加载关联。@javafan取决于具体情况。可能您最初希望延迟加载,但在检查某些条件后重新考虑
Hibernate.initialize()
允许您这样做。出于好奇,initialize方法有什么用?即使会话中没有initialize方法,我们也可以获得延迟可加载关联。@javafan取决于具体情况。可能您最初希望延迟加载,但在检查某些条件后重新考虑
Hibernate.initialize()
允许您这样做。出于好奇,initialize方法有什么用?即使会话中没有initialize方法,我们也可以获得延迟可加载关联。@javafan取决于具体情况。可能您最初希望延迟加载,但在检查某些条件后重新考虑
Hibernate.initialize()
允许您这样做。
SEVERE: failed to lazily initialize a collection of role: com.sample.hibernate.Emp.address, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.sample.hibernate.Emp.address, no session or session was closed