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

javax.persistence.criteria.CriteriaQuery cq = em.getCriteriaBuilder().createQuery();

我收到以下错误

找不到标志
符号:方法 getCriteriaBuilder()
位置:接口(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>

正如我在论坛上看到的那样,该应用程序似乎正在使用 JPA1.0 ......有人可以帮忙吗?

最佳答案

用:

    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.1.Final</version>
    </dependency>

并不是:
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>persistence-api</artifactId>
        <version>1.0.2</version>
    </dependency>

关于jpa-2.0 - 实体管理器没有方法 getCriteriaBuilder(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10298806/

10-12 23:13