首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA ObjectDB:编译并使用它

JPA ObjectDB:编译并使用它
EN

Stack Overflow用户
提问于 2013-05-07 19:28:02
回答 2查看 980关注 0票数 0

我正在尝试使用名为ObjectDB的JPA实现。我已经下载了ObjectDB的jar文件,并将它们包含在我的项目中。这是两个类:

代码语言:javascript
复制
package tutorial;

import java.io.Serializable;
import javax.persistence.*;

@Entity
public class Point implements Serializable {
 private static final long serialVersionUID = 1L;

 @Id @GeneratedValue
 private long id;

 private int x;
 private int y;

 public Point() {
 }

 Point(int x, int y) {
     this.x = x;
     this.y = y;
 }

public Long getId() {
    return id;
}

 public int getX() {
      return x;
 }

public int getY() {
     return y;
}

@Override
 public String toString() {
     return String.format("(%d, %d)", this.x, this.y);
 }
}

这就是Main:

代码语言:javascript
复制
package tutorial;

import javax.persistence.*;
import java.util.*;

public class Main {

public static void main(String[] args) {
     // Open a database connection
     // (create a new database if it doesn't exist yet):
     EntityManagerFactory emf =
         Persistence.createEntityManagerFactory("$objectdb/db/points.odb");
     EntityManager em = emf.createEntityManager();

     // Store 1000 Point objects in the database:
     em.getTransaction().begin();
     for (int i = 0; i < 1000; i++) {
         Point p = new Point(i, i);
         em.persist(p);
     }
     em.getTransaction().commit();

    // Find the number of Point objects in the database:
    Query q1 = em.createQuery("SELECT COUNT(p) FROM Point p");
    System.out.println("Total Points: " + q1.getSingleResult());

     // Find the average X value:
     Query q2 = em.createQuery("SELECT AVG(p.x) FROM Point p");
     System.out.println("Average X: " + q2.getSingleResult());

     // Retrieve all the Point objects from the database:
     TypedQuery<Point> query =
         em.createQuery("SELECT p FROM Point p", Point.class);
     List<Point> results = query.getResultList();
     for (Point p : results) {
         System.out.println(p);
     }

     // Close the database connection:
     em.close();
     emf.close();
 }
}

这个小程序只能通过执行以下操作在Eclipse中运行: Run As --> Java application

如果我尝试编译它,我会得到:

代码语言:javascript
复制
error: cannot find symbol
EntityManagerFactory emf =
symbol: class EntityManagerFactory
location: class Main

对所有其他类依此类推。这很奇怪,因为我在我的项目中包含了外部Jar,即包含ObjectDb可执行文件的jar文件……我能解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2013-05-08 05:56:13

如上所述,您需要设置类路径。

在类路径中,您可以只添加objectdb.jar,除了ObjectDB数据库实现之外,它还包括所有必需的EntityManagerFactory类型(例如EntityManagerFactory)。

因此,您在Windows中的命令行可以是:

代码语言:javascript
复制
> javac -classpath .;c:\objectdb\bin\objectdb.jar tutorial\*.java

当前目录是教程包目录的父目录时。

票数 2
EN

Stack Overflow用户

发布于 2013-05-07 19:35:52

您需要将JPA库添加到类路径。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16417847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档