一般动作
当访问一个领域实体对象的关联对象属性时抛出异常:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
这种异常多发生在计划任务、多线程(Thread.start、runAsync...)、或者 transactional 为 false 的服务类等处中,如:
既然异常已经很明显的说了 no Session,所以一般情况下,直接将整个代码块包在一个 Xxx.withNewSession 中即可,如:
或者,某些情况下处于性能考虑不希望添加 withNewSession,可以用动态查询或者HQL的方式来获得关联属性,如:
此外,类似的异常“No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here”也可以尝试使用 withNewSession 来处理。