2011-09-19 56 views
0

我使用休眠JPA,我可以成功地使用JPQL查詢,但我不能使用標準的API。我已閱讀JPA Criteria API missingjar file for JPA 2.0,我添加了hibernate-jpa-2.0-api-1.0.1.Final文件到庫,仍然無法找到getCriteriaBuilder()方法。請幫我我加入JPA2 JAR文件庫,但仍無法找到getCriteriaBuilder方法

import javax.persistence.criteria.CriteriaBuilder; 
import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 

method(){ 
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("Persistenceunit"); 
    EntityManager em = emf.createEntityManager(); 
    CriteriaBuilder cb = em.getCriteriaBuilder(); 
} 

我使用這些庫: 我的休眠庫文件:ANTLR-2.7.6.jar,asm.jar,ASM-attrs.jar,CGLIB-2.1.3.jar,公地-collections-2.1.1.jar,dom4j-1.6.1.jar,ehcache-1.2.3.jar,ejb3-persistence.jar,hibernate3.jar,hibernate-annotations.jar,hibernate-commons-annotations.jar,hibernate -entitymanager.jar,hibernate-jpa-2.0-api-1.0.1.Final.jar,hibernate-tools.jar,javassist.jar,jdbc2_0-stdext.jar,jta.jar,jtidy-r8-20060801.jar。這可能導致這種情況?

其他庫:jsf-api.jar,jsf-impl.jar,JSTL 1.1 - standard.jar,JSTL 1.1 - jstl.jar,commons-collections-3.2.1.jar,commons-digester3-3.0。罐子和prettyfaces

回答

0

你有沒有刪除JPA 1.0庫當你爲2.0加入的?如果沒有,那麼它看起來像EntityManager從那裏挑選。這就是失敗的是,在JPA 2

+0

我休眠庫文件提出的方法,爲什麼第一點:ANTLR-2.7.6.jar,asm.jar,ASM-attrs.jar,CGLIB-2.1.3.jar, commons-collections-2.1.1.jar,dom4j-1.6.1.jar,ehcache-1.2.3.jar,ejb3-persistence.jar,hibernate3.jar,hibernate-annotations.jar,hibernate-commons-annotations.jar,冬眠-entitymanager.jar,休眠-JPA-2.0-API-1.0.1.Final.jar,休眠-tools.jar中,javassist.jar,jdbc2_0-stdext.jar,jta.jar,jtidy-r8-20060801.jar。這可能導致這種情況?另外,其它庫:JSF-api.jar中,JSF-impl.jar中,JSTL 1.1 - standard.jar,JSTL 1.1 - 的jstl.jar,公地的集合-3.2.1.jar,公地digester3-3.0.jar&prettyfaces – Deniz

+0

ejb3-persistence.jar可能是這個問題的源頭,因爲它是包含EntityManager.class的。下一步可能是刪除那些屬於你以前的Hibernate版本的庫。 –

+0

我刪除了EJB3 persistence.jar和所有Hibernate庫和添加這些hibernate-distribution-3.6.7.Final jar文件:ANTLR-2.7.6.jar,dom4j的-1.6.1.jar,hibernate.jar文件,休眠,JPA -2.0-api-1.0.1.Final.jar,javassist-3.12.0.GA.jar,jta-1.1.jar,slf4j-api-1.6.1.jar。現在我的項目可以找到getCriteriaBuilder方法,但是當項目運行時,出現這個錯誤:java.lang.AbstractMethodError:org.hibernate.ejb.EntityManagerImpl.getCriteriaBuilder()Ljavax/persistence/criteria/CriteriaBuilder;堆棧跟蹤沒有任何消息超過那個消息。 – Deniz