hibernate3升级hiberante4方法

本文详细介绍了如何将Hibernate3升级至Hibernate4,并分享了在升级过程中遇到的一些常见问题及其解决办法。包括但不限于:更新JDK版本、解决Spring与Hibernate整合时的错误、处理依赖冲突、解决SQL语句中的别名重复问题、配置Oracle方言以兼容不同WebLogic版本、以及解决文件写入权限不足的问题。

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

怎么升级hibernate3 到hibernate4 及遇到的问题
1. 将原有hibernate3 jar全部删掉
2. 建议去网上下载完整的hibernate4.8 的jar,然后全部贴进去(不建议单独升级对应的jar,因为高版本可能会分拆低版本的jar,或者添加了依赖包)




3.遇到的错误
3.1
2016-03-01 04:34:24.072::WARN:  Failed startup of context org.mortbay.jetty.webapp.WebAppContext@bafda6{/naiu,src/main/webapp}
2. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0' defined in file [E:\eclipse\workspace\NAIU\src\main\webapp\WEB-INF\classes\beans\dataAccessContext-jpa-local.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in file [E:\eclipse\workspace\NAIU\src\main\webapp\WEB-INF\classes\beans\dataAccessContext-jpa-local.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Error loading class [org.hibernate.ejb.HibernatePersistence]: problem with class file or dependent class.
解决办法:升级本地jdk1.5 为jdk1.6




3.2
1. Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0' defined in file [E:\eclipse\workspace\NAIU\src\main\webapp\WEB-INF\classes\beans\dataAccessContext-jpa-local.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in file [E:\eclipse\workspace\NAIU\src\main\webapp\WEB-INF\classes\beans\dataAccessContext-jpa-local.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getSharedCacheMode()Ljavax/persistence/SharedCacheMode;
解决办法:删除  ejb3-persistence-3.0(我的项目使用的是jpa,已经添加了hibernate-jpa)








3.3
Caused by: java.lang.NoClassDefFoundError: javassist/util/proxy/MethodFilter
at org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl.getProxyFactoryFactory(BytecodeProviderImpl.java:56)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactoryInternal(PojoEntityTuplizer.java:241)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:219)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:212)
at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:82)
... 60 more
Caused by: java.lang.ClassNotFoundException: javassist.util.proxy.MethodFilter
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:375)  


升级jar为 javassist-3.15.0-GA.jar 原先的为3.0














3.4


org.springframework.orm.jpa.JpaSystemException: org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [CLASS1_NAME] during auto-discovery of a native-sql query; nested exception is javax.persistence.PersistenceException: org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [CLASS1_NAME] during auto-discovery of a native-sql query
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:321)
at org.springframework.orm.jpa.DefaultJpaDialect.translateExceptionIfPossible(DefaultJpaDialect.java:121)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
at org.springframework.orm.jpa.JpaAccessor.translateIfNecessary(JpaAccessor.java:155)
at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:192)
at org.springframework.orm.jpa.JpaTemplate.executeFind(JpaTemplate.java:154)
at com.newtouch.repository.impl.BaseRepositoryImpl.findByNativeSQL(BaseRepositoryImpl.java:329)
at com.newtouch.repository.impl.BaseRepositoryImpl.findByNativeSQL(BaseRepositoryImpl.java:350)
at com.cpic.naiu.cpic.repository.imp.CommQueryRepositoryImp.findItem(CommQueryRepositoryImp.java:140)
at com.cpic.naiu.cpic.service.imp.CommQueryServiceImp.findItem(CommQueryServiceImp.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)




解决办法:好像是 sql语句中,出现了相同的列名,给相同的列名起别名








3.5
org.springframework.orm.jpa.JpaSystemException: org.hibernate.MappingException: No Dialect mapping for JDBC type: -9; nested exception is javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: -9


经验证 weblogic9(正常)和weblogic10(不正常) 版本不同 出现的问题.
解决办法: 1.新建类oracledialect  同时改jdbc.properties
将原有hibernate.dialect=org.hibernate.dialect.OracleDialect
改为hibernate.dialect=com.cpic.naiu.cpic.util.OracleDialect


import org.hibernate.dialect.Oracle10gDialect;


public class OracleDialect  extends Oracle10gDialect{


public OracleDialect() {
super();
  registerHibernateType(1, "string");  
       registerHibernateType(-9, "string");  
       registerHibernateType(-16, "string");  
       registerHibernateType(3, "double");  
}






3.6
java.io.FileNotFoundException: /cpic/jtlftm/exprotFiles/a_7022.xml (Permission denied)
        at java.io.FileOutputStream.openAppend(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:192)
        at java.io.FileWriter.<init>(FileWriter.java:90)
        at com.cpic.naiu.cpic.service.imp.ExportServiceImpl.exportResult(ExportServiceImpl.java:387)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
        at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)




解决办法: 给文件夹 附上写入权限 





























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值