1

データベース接続を学習するための簡単な Java アプリを作成しました。

Oracle 11g データベースにテーブル USR_BOOKS があります。EclipseLink(JPA 2.0) Persistence ライブラリを使用します。

「Create Entity From Database」を使って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);

コードは機能し、テーブルからデータを出力するだけでエラーが発生します

4

1 に答える 1

1

おそらくpersistence.xmlでeclipselink.ddl-generationプロパティに値がありますcreate-tablesnone代わりに試してください:

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