2012-10-30 170 views
1

我創建了一個簡單的JAVA應用程序來學習數據庫連接。JPA createEntityManager導致Oracle 955錯誤

我在Oracle 11g數據庫中有USR_BOOKS表。使用EclipseLink(JPA 2.0)持久性庫。

使用「從數據庫創建實體」,我創建了一個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

可能在persistence.xml中eclipselink.ddl-generation財產確實具有價值create-tables。請使用none代替:

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