org.springframework.orm.hibernate5.support.OpenSessionInViewFilter.doFilterInternal和org.springframew...

本文探讨了SSH框架下Hibernate懒加载引发的问题,包括一对多或多对一关系处理不当导致的内存溢出。文章强调了实体类中toString方法的正确使用,避免无限循环调用,并提供了在Struts2和Hibernate共存环境下解决懒加载冲突的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

javax.servlet.ServletException: Filter execution threw an exception
	org.springframework.orm.hibernate5.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)


 

这个是hibernate的一对多,多对一造成的在实体类里一的一方toString千万不要写多的内容!!!

 

画圈的删掉,多的一方的属性,否则会出现各种错误包括懒加载和内存溢出等问题(两个toString无线循环)

所以不要无脑一键toString,会有多余的东西!

 

ssh中Hibernate 的懒加载导致的一些问题,首先是ssh的jar包会有冲突导致懒加载的问题,Struts2和Hibernate的两个包都有

删掉其中一个 maven配也有这个问题

 

 

 

转载于:https://www.cnblogs.com/King-Jin/p/10961802.html

<think>好的,我现在需要解决用户提到的“org.springframework.orm.hibernate3包不存在”的问题。首先,我得回忆一下SpringHibernate的版本兼容性问题。用户提到的是hibernate3,而Spring框架的某些版本可能已经不再支持这个旧的Hibernate版本了。首先,用户可能是在他们的项目中引用了这个包,但依赖没有正确配置。我需要检查常见的解决方案,比如确认依赖是否正确添加。考虑到MavenGradle是常用的构建工具,用户可能是在pom.xml或build.gradle中缺少相应的依赖项。接下来,我需要考虑SpringHibernate3的兼容性。根据Spring的版本历史,可能在Spring3之后,对Hibernate3的支持逐渐减少,而转向Hibernate4或5。如果用户使用的是较新的Spring版本,比如Spring5,那么org.springframework.orm.hibernate3可能已经被移除了,这时候需要降级Spring版本或者升级Hibernate到更高版本。另外,用户可能错误地输入了包名,需要检查拼写是否正确。有时候,可能是简单的拼写错误导致的问题,比如多了一个字母或者少了一个点。 还有一种可能是仓库中没有这个包,特别是如果用户使用的是内部仓库或者配置错误的Maven仓库地址,可能需要检查仓库配置,确保能够从正确的仓库下载依赖。然后,我需要参考用户提供的引用内容。虽然引用中的内容主要关于Spring的Java配置缓存,但其中提到@Configuration@Bean的使用,这可能与Hibernate的配置有关。例如,用户可能在配置Hibernate时使用了过时的类或方法,导致依赖缺失。最后,生成相关问题需要考虑用户可能的后续疑问,比如如何迁移到新版本、替代方案有哪些、如何检查依赖冲突等。</think>### 解决“org.springframework.orm.hibernate3包不存在”问题的方法 #### 1. **检查依赖配置** - **Maven项目**:确保`pom.xml`中包含以下依赖: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>3.2.18.RELEASE</version> <!-- 需与Hibernate3兼容的Spring版本 --> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.6.10.Final</version> </dependency> ``` - **Gradle项目**:在`build.gradle`中添加: ```groovy implementation 'org.springframework:spring-orm:3.2.18.RELEASE' implementation 'org.hibernate:hibernate-core:3.6.10.Final' ``` - **注意**:Spring 5及以上版本已移除对Hibernate3的支持[^1]。 #### 2. **验证Spring版本兼容性** - **Spring 3.x**:支持Hibernate3,但需确保版本匹配。例如: - `spring-orm:3.2.18.RELEASE` + `hibernate-core:3.6.10.Final` - **Spring 4.x及以上**:建议升级到Hibernate4/5或降级Spring版本[^2]。 #### 3. **检查包名拼写** - 确认代码中引用的是正确的包路径: ```java import org.springframework.orm.hibernate3.HibernateTemplate; // 正确路径 ``` - 避免拼写错误(如`hibernat3`或`hibernate3.orm`)。 #### 4. **检查仓库配置** - 若使用Maven,确保仓库(如Maven Central)包含该包。在浏览器中访问: ``` https://repo1.maven.org/maven2/org/springframework/spring-orm/3.2.18.RELEASE/ ``` 确认`spring-orm-3.2.18.RELEASE.jar`存在。 #### 5. **替代方案:迁移到新版本** - 若需使用Spring 5+,建议升级Hibernate至4/5,并替换相关类: ```java import org.springframework.orm.hibernate5.HibernateTemplate; // Hibernate5对应的包 ``` - 更新依赖: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>5.3.23</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.6.14.Final</version> </dependency> ``` #### 6. **验证项目构建工具** - 执行`mvn clean install`或`gradle build`,查看是否下载了正确版本的依赖。 --- ### 相关问题 1. **如何检查项目中依赖冲突导致的类缺失问题?** - 使用`mvn dependency:tree`或`gradle dependencies`分析依赖树。 2. **Spring与Hibernate版本兼容性规则是什么?** - 参考Spring官方文档的版本矩阵,例如Spring 3.x仅支持Hibernate3.x[^2]。 3. **从Hibernate3迁移到Hibernate5需要修改哪些代码?** - 需替换`org.springframework.orm.hibernate3`为`hibernate5`包,并调整API调用(如`SessionFactory`初始化方式)。 4. **如何在IntelliJ/Eclipse中快速修复缺失的依赖包?** - 通过IDE的自动导入功能或依赖管理工具重新导入项目。 5. **为什么Maven Central仓库中找不到某些旧版本依赖?** - 部分旧版本可能被归档或移至其他仓库,需检查仓库配置或手动添加JAR包。 --- [^1]: 若使用Spring 5+,需注意其仅支持Hibernate5及以上版本,且包路径已调整为`org.springframework.orm.hibernate5`。 [^2]: Spring 3.x的官方文档明确标注了与Hibernate3的兼容性,建议通过版本管理工具锁定依赖版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值