JPA createEntityManager导致Oracle 955错误

时间:2012-10-30 16:22:20

标签: oracle jpa persistence ora-00955

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

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

使用“从数据库创建实体”,我用Java创建了一个类,并创建了JPA Controller类。

除了我总是得到

之外,一切似乎都很好
    [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);

代码工作,甚至打印表中的数据,只是得到错误

1 个答案:

答案 0 :(得分:1)

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

<property name="eclipselink.ddl-generation" value="none"/>