データベース接続を学習するための簡単な 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);
コードは機能し、テーブルからデータを出力するだけでエラーが発生します