古詩詞大全網 - 藝術簽名 - hibernate連接在spring MVC中出錯

hibernate連接在spring MVC中出錯

spring+hibernate出錯小結:

(1)java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext

原因:出現這錯誤時,請更改hibernate的包,更新至最新或3.1以上

(2)java.lang.NoClassDefFoundError: javax/transaction/TransactionManager

原因:缺少jta.jar 或者是找不到hbm.xml文件導致sessionfactory出錯,檢查hbm文件路徑是否正確,文件是否存在

(3) 錯誤:

Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update

或者org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: [com.yourcompany.model.Login]; bad SQL grammar [insert into mysql__login (name, password) values (?, ?)]; nested exception is java.sql.SQLException: Table 'mysql.mysql__login' doesn't exist java.sql.SQLException: Table 'mysql.mysql__login' doesn't exist

原因與解決:因為Hibernate Tools(或者Eclipse本身的Database Explorer)生成*.hbn.xml工具中包含有catalog="***"(*表示數據庫名稱)這樣的屬性,將該屬性刪除就可以了

(4)org.springframework.orm.hibernate3.HibernateQueryException: undefined alias

原因:在spring配置文件中,可能妳設置了<prop key="hibernate.query.factory_class">

org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>,指定了HQL的解釋器,請刪除或更改另壹個解釋器org.hibernate.hql.ast.ASTQueryTranslatorFactory, 如果沒有設置,請確認是否有寫錯了HQL語句,是否與POJO裏的屬性壹樣。註意區分大小寫。

(5)quartz報錯: Caused by: java.lang.NoSuchMethodError:

org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set;

原因是由於使用的commons-collections.jar版本太低導致的要使用3.*的才行,下載地址為:mons.apache.org/downloads/download_collections.cgi

選Binary下的zip下載,下載後將裏的的commons-collections-x.x.x.jar放置到妳的classpath裏即可。記得刪除舊的那個jar包

(6)org.springframework.beans.factory.CannotLoadBeanClassException:

Cannot find class [com.mchange.v2.c3p0.ComboPooledDataSource] for bean

這是因為妳的sping配置文件是使用c3p0作數據池,而妳的classpath裏沒有找到這個c3p0的jar包而導致的,下載壹個jar導入classpath即可。

地址為:mons/pool/impl/GenericObjectPool 的解決方法

java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool原因:

找不到 Caused by:

java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool

就是Apache所提供的基本對象池。

解決:

到這裏mons.apache.org/downloads/download_pool.cgi下載包,然後,把裏面的commons-pool-x.jar復制到myEclipse的Referenced Libraries下.

(12)錯誤提示:java.lang.NoClassDefFoundError:

org/apache/commons/collections/LRUMap類沒找到,

或org/apache/commons/collections/SequenceHashMap類沒找到:

工程裏的commons-collections.jar包與其它包不匹配導致的,例如如果妳用

commons-beanutils-1.7.0.jar,commons-collections-3.2.jar時會出現妳的那種問題,如果是commons-beanutils-1.7.0.jar,commons-collections-3.1.jar就不會就這種問題了...祝妳好運啦

(13)Spring2.0與Hibernate3.0的錯誤解決

嚴重: action: null

org.springframework.beans.factory.BeanCreationException: Error creating bean with name

'sessionfactory' defined in ServletContext resource [/WEB-INF/beans-config.xml]: Initialization of bean failed; nested exception is java.lang.SecurityException:

class "org.apache.commons.collections.SequencedHashMap"'s signer information does not match signer information of other classes in the same package

java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"s signer information does not match signer information of other classes in the same package

at java.lang.ClassLoader.checkCerts(ClassLoader.java:775)

at java.lang.ClassLoader.preDefineClass(ClassLoader.java:487)

at java.lang.ClassLoader.defineClass(ClassLoader.java:614)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at

org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1817)

at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872).........

Spring2.0 AOP Liberaries裏的asm2.2.3.jar和Hiberate中的生成代理用的asm.jar沖突,後來把asm2.2.3.jar刪了才好使

或者

java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor

java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor

java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit

java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V

這個錯誤是因為系統需要壹個叫“asm.jar”的包,而這個包在SpingAop包中和Hibernate包中都有,而且不象話的是這兩個包中的類org.objectweb.asm.ClassVisitor的方法visit方法簽名竟然不壹樣,所以解決方法很簡單,項目在加HIBERNATE3能力的時候不加庫,直接用Spring的AOP的庫就可以了。

在使用Spring的AOP編程時,會用到這幾個lib:

asm-2.2.2.jar

asm-commons-2.2.2.jar

asm-util-2.2.2.jar

Hibernate使用如果lib:

asm.jar

asm-attrs.jar

其中asm-2.2.2.jar與asm.jar存在類上的沖突!

使用其中之壹或兩者都使用,可能會出現如下錯誤:

java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor

java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor

java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。

解決辦法是:

去掉類路徑上的關於Hibernate的3個lib

asm.jar

asm-attrs.jar

cglib-2.1.3.jar

保留Spring中的以下4個lib

asm-2.2.2.jar

asm-commons-2.2.2.jar

asm-util-2.2.2.jar

cglib-nodep-2.1_3.jar

或去掉asm-commons-2.2.2.jar

asm-util-2.2.2.jar

cglib-nodep-2.1_3.jar

(14) 錯誤提示:net.sf.cglib.core.CodeGenerationException:

java.lang.reflect.InvocationTargetException-->null

Caused by: java.lang.reflect.InvocationTargetException

Caused by: java.lang.SecurityException:

class "com.wuwei.struts.bean.User

EnhancerByCGLIB

1016ffbf"'s signer information does not match signer information of other classes in the same package

在….hbm.xml文件中,將class標簽的lazy屬性改為false(默認為true)

<class name="com.wuwei.struts.bean.User" table="user" lazy="false">。如果有schema="dbo" catalog="test"配置信息,請將其刪除