获取java.lang.NoSuchMethodError:javax / persistence / criteria / CriteriaBuilder.createCriteriaUpdate

时间:2015-12-08 22:23:50

标签: hibernate maven jpa nosuchmethoderror jpa-2.1

我的项目最初是在JPA 2.0上,我试图更新到JPA 2.1。我试图使用' CriteriaUpdate'它使用JPA 2.1。我将hibernate-jpa-2.1-api添加到我的maven pom.xml中,我在文件夹中有javax.persistence.criteria.CriteriaUpdate库。但是,我收到了以下错误。

Caused by: java.lang.NoSuchMethodError: javax/persistence/criteria/CriteriaBuilder.createCriteriaUpdate(Ljava/lang/Class;)Ljavax/persistence/criteria/CriteriaUpdate;
at com.cfins.esbConsole.dao.AuthenticationDao.changeUsrPaswrd(AuthenticationDao.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at com.ibm.ejs.container.EJSContainer.invokeProceed(EJSContainer.java:5730)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:568)
at org.apache.webbeans.ejb.common.interceptor.OpenWebBeansEjbInterceptor.callInterceptorsAndDecorators(OpenWebBeansEjbInterceptor.java:526)
at org.apache.webbeans.ejb.common.interceptor.OpenWebBeansEjbInterceptor.callToOwbInterceptors(OpenWebBeansEjbInterceptor.java:200)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor(InterceptorProxy.java:227)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:548)
at org.apache.webbeans.ejb.WSEJBInterceptor.callToOwbInterceptors(WSEJBInterceptor.java:136)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor(InterceptorProxy.java:227)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:548)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.doAroundInvoke(InvocationContextImpl.java:229)
at com.ibm.ejs.container.EJSContainer.invoke(EJSContainer.java:5621)
... 47 more

这些我使用

的依赖关系
      <!-- JPA -->
<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>
 <!-- For date time api  -->
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
    <version>2.2</version>
    </dependency>            

      <!-- Optional, but highly recommended. -->
      <dependency>
         <groupId>org.testng</groupId>
         <artifactId>testng</artifactId>
         <version>5.10</version>
         <scope>test</scope>
         <classifier>jdk15</classifier>
      </dependency>

<!-- for session  -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>

<dependency>
    <groupId>javax.ejb</groupId>
    <artifactId>ejb-api</artifactId>
    <version>3.0</version>
</dependency>

 <dependency>
    <groupId>javax.el</groupId>
    <artifactId>el-api</artifactId>
    <version>2.2</version>
</dependency>


      <!-- Needed on JBoss AS as EL is out of date -->
      <dependency>
         <groupId>org.glassfish.web</groupId>
         <artifactId>el-impl</artifactId>
         <scope>runtime</scope>
         <!-- FIXME this version should be in the Weld API BOM -->
         <version>2.1.2-b04</version>
      </dependency>
   </dependencies>

我已经阅读过类似问题的其他帖子,对我来说没有任何用处,例如更新到Java ee 7和删除旧的hibernate jpa jar。有什么问题?

3 个答案:

答案 0 :(得分:0)

您在某处CLASSPATH中有JPA API 2.0 jar(或更早版本)。把JPA API 2.1放在CLASSPATH中是好的和好的,但是你需要删除现有的jar

答案 1 :(得分:0)

您必须拥有多个Jpa罐。

答案 2 :(得分:0)

设置为项目方面JPA 2.1版