我的應用程序中有一些實現JPA 2.0的問題。我正在使用Criteria查詢,我需要從EntityManager中獲取會話。我按照以下方式(根據this) Session ses = entityManager.unwrap(Session.class);EntityManager.unwrap()拋出java.lang.AbstractMethodError
在Tomcat 7.0.8上運行後,我得到如下:
Struts has detected an unhandled exception:
# Messages: org.hibernate.ejb.EntityManagerImpl.unwrap(Ljava/lang/Class;)Ljava/lang/Object;
Stacktraces
java.lang.reflect.InvocationTargetException
java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerImpl.unwrap(Ljava/lang/Class;)Ljava/lang/Object; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
而且我引用下面的Hibernate相關的依賴性(這裏我懷疑問題):
hibernate-3.2.5.ga.jar
hibernate-annotations-3.4.0.GA.jar
hibernate-commons-annotations-3.1.0.GA.jar
hibernate-core-3.3.0.GA.jar
hibernate-entitymanager-3.4.0.GA.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
對此有何想法?
解決了它!從hibernate.org下載最新的hibernate jars。另外,我在我的classpath中有一個ejb3-persistence.jar,它具有相同的包名稱,並且在構建路徑順序中的hibernate-jpa-2.0 jar之前。該jar沒有實現JPA 2.0規範。 –
@ariel然後你應該[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –