【问题标题】:EntityManager.createStoredProcedureQuery() is not resolvedEntityManager.createStoredProcedureQuery() 未解决
【发布时间】:2017-07-29 07:13:47
【问题描述】:

我有 Spring 4.1.0.Final、JPA hibernate-jpa-2.1-api 和 MySql。我正在使用它来开发 REST API。现在我需要调用存储过程。我必须确保 EntityManager.createStoredProcedureQuery() 用于调用存储过程。此功能在 JPA 2.1 中可用。我已经有 JPA 2.1 但仍然无法解析 EntityManager.createStoredProcedureQuery()。粘贴 Maven 配置的快照。

请告诉我可能是什么问题:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.test</groupId>
   <artifactId>TESTAPI</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TESTAPI</name>
   <properties>
      <java-version>1.8</java-version>
      <org.springframework-version>4.2.5.RELEASE</org.springframework-version>
      <org.springframework-security-version>4.1.1.RELEASE</org.springframework-security-version>
      <org.springframework-security-oauth-version>2.0.10.RELEASE</org.springframework-security-oauth-version>
      <org.aspectj-version>1.6.10</org.aspectj-version>
      <org.slf4j-version>1.6.6</org.slf4j-version>
      <failOnMissingWebXml>false</failOnMissingWebXml>
   </properties>
   <dependencies>
      <!-- Spring -->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-core</artifactId>
         <version>${org.springframework-version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-web</artifactId>
         <version>${org.springframework-version}</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-tx</artifactId>
         <version>${org.springframework-version}</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>5.1.6</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
      <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-core</artifactId>
         <version>4.1.4.Final</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
      <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-validator</artifactId>
         <version>4.1.0.Final</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.1-api -->
      <dependency>
         <groupId>org.hibernate.javax.persistence</groupId>
         <artifactId>hibernate-jpa-2.1-api</artifactId>
         <version>1.0.0.Final</version>
      </dependency>
      <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-entitymanager</artifactId>
         <version>4.1.0.Final</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 -->
      <!-- >dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.1.0.Final</version>
        </dependency-->
      <!-- https://mvnrepository.com/artifact/org.eclipse.persistence/javax.persistence -->
      <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-jdbc</artifactId>
         <version>${org.springframework-version}</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-orm</artifactId>
         <version>${org.springframework-version}</version>
      </dependency>
      <dependency>
         <groupId>javax.transaction</groupId>
         <artifactId>jta</artifactId>
         <version>1.1</version>
      </dependency>
      <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-io</artifactId>
         <version>1.3.2</version>
      </dependency>
   </dependencies>
   <build>
      <finalName>TESTAPI</finalName>
   </build>
   <!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk -->
</project>

【问题讨论】:

  • 编译通过一个错误,createStoredProcedureQuery() 在EntityManager 中不存在。
  • 编译器“抛出”!所以你在类路径中有一个 JPA 2.0 API jar!再简单不过了
  • 在 pom 中已经有 JPA 2.1:org.hibernate.javax.persistencehibernate-jpa-2.1-api1.0 .0.Final
  • 谢谢!已从类路径中删除 JPA 2.0 并立即获取方法。

标签: java spring hibernate maven jpa


【解决方案1】:

你有两个选择。

1)hibernate-entitymanager 中排除hibernate-jpa-2.0-api

  <dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-entitymanager</artifactId>
     <version>4.1.0.Final</version>
     <exclusions>
       <exclusion>  
         <groupId>org.hibernate.javax.persistence</groupId>
         <artifactId>hibernate-jpa-2.0-api</artifactId>
       </exclusion>
     </exclusions> 
  </dependency>

2) 将 hibernate-entitymanager 的版本升级到包含 2.1 JPA api 作为其依赖项的第一个版本:

  <dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-entitymanager</artifactId>
     <version>4.3.0.Final</version> 
  </dependency>

【讨论】:

    【解决方案2】:

    抱歉回复晚了。希望您能解决您的问题,但如果您使用 JPA 升级 hibernate-entitymanager 和 hibernate-jpa 版本,它可能对新手有所帮助:

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.3.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
            <version>1.0.2.Final</version>
            <scope>provided</scope>
        </dependency>
    

    默认情况下,如果我们从这个命令创建一个 maven 项目,我们会遇到这个问题......

    mvn archetype:generate -DarchetypeArtifactId=jboss-javaee6-webapp -DarchetypeGroupId=org.jboss.spec.archetypes -DgroupId=com.example.helloworld -DartifactId=项目路径 -DinteractiveMode=false

    谢谢

    【讨论】:

      猜你喜欢
      • 2016-01-12
      • 2021-02-06
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 2012-09-06
      • 2011-10-05
      相关资源
      最近更新 更多