1

我创建了一个简单的 JAVA 应用程序来学习数据库连接。

我在 Oracle 11g 数据库中有表 USR_BOOKS。使用 EclipseLink(JPA 2.0) 持久性库。

使用“从数据库创建实体”,我在 Java 中创建了一个类,并创建了 JPA 控制器类。

一切似乎都很好,除了我总是得到

    [EL Warning]: 2012-10-30 16:50:31.957--ServerSession(1278203495)--Exception 
       [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: ORA-00955: name is already used by an existing object

    Error Code: 955
    Call: CREATE TABLE USR_BOOKS (ID NUMBER(19) NOT NULL, NAZOV VARCHAR2(255) NULL, PRIMARY KEY (ID))
    Query: DataModifyQuery(sql="CREATE TABLE USR_BOOKS (ID NUMBER(19) NOT NULL, NAZOV VARCHAR2(255) NULL, PRIMARY KEY (ID))")

我没有在任何地方调用 CREATE TABLE 查询,但直到我调用函数

   EntityManager em = emf.createEntityManager();

错误不存在看起来函数 createEntityManager() 创建了 SQL 语句并将其发送到数据库中。

我尝试从数据库中删除表。然后程序在数据库中创建表 USR_BOOKS - 同样,我不会不小心调用任何可能导致它的函数。

这基本上是我的代码:

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("JavaOracleDBPU2");
    EntityManager em = emf.createEntityManager();
    UsrBooksJpaController booksController = new UsrBooksJpaController(emf);
    List<UsrBooks> usrBooksAll = booksController.findUsrBooksEntities();
    System.out.println(usrBooksAll);

代码有效,甚至从表中打印数据,只是得到错误

4

1 回答 1

1

可能在 persistence.xml eclipselink.ddl-generation属性中确实有值create-tables。请尝试none

<property name="eclipselink.ddl-generation" value="none"/>
于 2012-10-30T20:06:12.093 回答