Java 如何修复LazyInitializationException-Spring应用程序中没有会话?
在Spring应用程序中,有时会出现异常:Java 如何修复LazyInitializationException-Spring应用程序中没有会话?,java,spring,transactions,spring-transactions,Java,Spring,Transactions,Spring Transactions,在Spring应用程序中,有时会出现异常:org.hibernate.LazyInitializationException:延迟初始化角色集合失败。。。无法初始化代理-在客户端.getCatIdSet上没有会话。我无法测试fetch=FetchType.EAGER是否修复问题,因为此错误不是经常发生的。类具有Transactional注释,方法是公共的。如何修复此异常 @服务 @交易的 公共类聊天室服务{ @持久上下文 实体管理器实体管理器; 公共BotRequest getBotReques
org.hibernate.LazyInitializationException:延迟初始化角色集合失败。。。无法初始化代理-在客户端.getCatIdSet
上没有会话。我无法测试fetch=FetchType.EAGER
是否修复问题,因为此错误不是经常发生的。类具有Transactional
注释,方法是公共的。如何修复此异常
@服务
@交易的
公共类聊天室服务{
@持久上下文
实体管理器实体管理器;
公共BotRequest getBotRequest(MessageData MessageData){
Client Client=messageData.getMessage().getClient();
Optional mbCatId=Optional.ofNullable(client.getCatIdSet())
.orElse(Collections.emptySet())
.过滤器
...
此方法从以下位置调用:
@服务
公共类SendMsgToBotService扩展了SendMsgToBotService{
@凌驾
受保护的BotRequest createBotRequest(MessageData MessageData){
返回chatService.getBotRequest(messageData);
}
客户实体:
@实体
@表(name=“客户”)
公共类客户端实现可序列化{
私有int-id;
专用集catIdSet;
@身份证
@GeneratedValue(策略=GenerationType.SEQUENCE,generator=“客户端\生成”)
@SequenceGenerator(name=“clients\u generation”,sequenceName=“clients\u id\u seq”,allocationSize=1)
@列(name=“id”)
公共int getId(){
返回id;
}
@OneToMany(mappedBy=“客户”)
公共集getCatIdSet(){
返回catIdSet;
}
在web.xml中,添加以下过滤器
<filter>
<filter-name>SpringOpenEntityManagerInViewFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SpringOpenEntityManagerInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
SpringOpenEntityManager视图过滤器
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
SpringOpenEntityManager视图过滤器
/*