我创建了一个简单的 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);
代码有效,甚至从表中打印数据,只是得到错误