【hibernate框架】hibernate遇到的幾個異常解決
阿新 • • 發佈:2019-01-25
今天使用hibernate3.6.5自己配置jar lib,在測試時遇到了幾個異常如下:
1.java.lang.NoSuchFieldError: INSTANCE
解決:刪除hibernate-annotations.jar。
2.java.lang.ClassCastException: org.hibernate.annotations.common.reflection.java.JavaReflectionManager cannot be cast to org.hibernate.annotations.common.reflection.MetadataProviderInjector
解決:刪除hibernate-commons-annotations.jar。
3.org.hibernate.HibernateException: No CurrentSessionContext configured!
解決:新增hibernate-jpa-2.0-api-1.0.0.Final.jar
4.org.hibernate.HibernateException: No TransactionManagerLookup specified
at org.hibernate.context.JTASessionContext.currentSession(JTASessionContext.java:81)
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:687)
at com.cvv.service.UserManager.exists(UserManager.java:16)
沒有CurrentSessionContext的配置。
解決:在整合Hibernate的環境下(例如Jboss),要在hibernate.cfg.xml中session-factory段加入:
Xml程式碼 :
<property name="current_session_context_class">jta</property>
在不整合Hibernate的環境下(例如使用JDBC的獨立應用程式),在hibernate.cfg.xml中session-factory段加入:
Xml程式碼 :
<property name="current_session_context_class">thread</property>
測試執行,ok!
1.java.lang.NoSuchFieldError: INSTANCE
解決:刪除hibernate-annotations.jar。
2.java.lang.ClassCastException: org.hibernate.annotations.common.reflection.java.JavaReflectionManager cannot be cast to org.hibernate.annotations.common.reflection.MetadataProviderInjector
解決:刪除hibernate-commons-annotations.jar。
3.org.hibernate.HibernateException: No CurrentSessionContext configured!
解決:新增hibernate-jpa-2.0-api-1.0.0.Final.jar
4.org.hibernate.HibernateException: No TransactionManagerLookup specified
at org.hibernate.context.JTASessionContext.currentSession(JTASessionContext.java:81)
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:687)
at com.cvv.service.UserManager.exists(UserManager.java:16)
沒有CurrentSessionContext的配置。
解決:在整合Hibernate的環境下(例如Jboss),要在hibernate.cfg.xml中session-factory段加入:
Xml程式碼 :
<property name="current_session_context_class">jta</property>
在不整合Hibernate的環境下(例如使用JDBC的獨立應用程式),在hibernate.cfg.xml中session-factory段加入:
Xml程式碼 :
<property name="current_session_context_class">thread</property>
測試執行,ok!