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