JPA项目在哪里注解@NamedQueries

时间:2018-08-01 12:15:13

标签: java maven jpa

我有一个Maven项目,我想与JPA合作。

我的pom.xml是

<dependencies>

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>javax.persistence</artifactId>
            <version>2.1.0</version>
        </dependency>
        <dependency>
            <groupId>javax.transaction</groupId>
            <artifactId>jta</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.197</version>
        </dependency>
    </dependencies>

我有以下课程

package edu.javacd.reviewservice;

import javax.persistence.Entity;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

    @Entity
    @Table(name = "REVIEW")
    @NamedQueries({ @NamedQuery(name = "Review.findAll", query = "SELECT r FROM Review r"),
    @NamedQuery(name = "Review.findById", query = "SELECT r FROM Review r WHERE r.id = :id"),
    @NamedQuery(name = "Review.findByMovieId", query = "SELECT r FROM Review r WHERE r.movieId = :id") })
    public class Review implements Serializable {
    }

我必须如何配置pom.xml以使用@NamedQueries批注

2 个答案:

答案 0 :(得分:0)

编辑:注释位于此软件包中:javax.persistence.NamedQueries 通常,您的pom.xml已经使用@NamesQueries注释进行配置。

编辑:并且您缺少EclipseLink实现的依赖项:

查看此旧帖子:How to setup Eclipselink with JPA?

您的3个依赖项(它们是外部库)分别代表:

  • 编辑:JPA批注
  • JPA事务管理
  • 用于H2数据库的JDBC驱动程序

此注释使您可以列出将在程序中使用的所有查询及其sql语句。而不是在代码中直接输入sql语句,您将得到以下内容:

Query query = em.createNamedQuery("Review.findAll");
List results = query.getResultList();

答案 1 :(得分:0)

您将在Java @NamedQueries中找到persistence api注释和您提到的其他注释(@ Entity,@ Table,@ NamedQuery)。在您的pom.xml中将其coordinates(或其他使用它的库,例如Hibernate,WildFly等)添加为依赖项以使用它们:

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