我创建了一个简单的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);
代码工作,甚至打印表中的数据,只是得到错误
答案 0 :(得分:1)
可能在persistence.xml eclipselink.ddl-generation属性中有值create-tables
。请尝试none
:
<property name="eclipselink.ddl-generation" value="none"/>