实体管理器没有方法getCriteriaBuilder()

Que*_*ark 6 entitymanager jpa-2.0

我在我的Oracle9i数据库应用程序中引入了JPA2.0,并添加了库EclipseLink(JPA2.0)并创建了实体类,但是当我使用它时

javax.persistence.criteria.CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

找不到符号符号:方法getCriteriaBuilder()location:interface javax.persistence.EntityManager

我的web.xml是版本2.4,这是我的persistence.xml

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
   <persistence-unit name="MiraclinPU" transaction-type="JTA">
    <jta-data-source>jdbc/Miraclin</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
   </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

看起来应用程序正在使用JPA1.0,因为我在论坛上阅读...任何人都可以帮忙吗?

Thy*_*els 5

使用:

    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.1.Final</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

并不是:

    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>persistence-api</artifactId>
        <version>1.0.2</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)


Que*_*ark 4

搜索项目中包含的所有库,并删除包含 persistence.xml 的库(除了您需要的库之外)。然后再次重新包含它们。