你好,我已经在办公室的代码中寻找了一个错误已经长达一周之久。它与Spring、Hibernate和Transactions有关。
我的了解:
1. 延迟加载。
2. Spring如何使用代理和拦截器进行事务管理。
3. Spring中的事务传播以及我们的代码使用默认值REQUIRED。
4. 请求/会话的每个Session和Hibernate的分离实体基本原理,以保持会话,并且我们的不是每个会话的Session。
我的情景: 我的代码中有一个方法(由其他人编写)使用@Transactional( -称之为方法a())并调用另一个服务方法,该方法使用Hibernate从DB加载客户机( -称之为方法b())。b()也有@Transactional。客户有许多延迟字段,在控制返回到方法a()时,延迟字段无法加载因为Session已关闭。我不明白的是-当方法a()尚未完成时,为什么会话已关闭? b()完成后,Spring对会话做了什么?我不介意指向一个网址。
我还有更多的问题,因为我现在已经搞了一周了,但是不想在不理解会话情况下污染此帖子。
请建议。